如何使用Selenium VBA抢夺innerHTML

时间:2019-11-06 17:41:42

标签: excel vba selenium

如果我在chrome中执行任务时出现弹出窗口,然后尝试单击“确定”并保存或退出,我将尝试获取innerHTML。我遇到的问题是在iframe中可能出现的弹出窗口之前,需要切换回主体。我正在使用硒:

main body (possible pop_up *i think*)
   iframe (I am here)

下面是一些我的代码,删除了不必要的行:

Dim sel As Selenium.ChromeDriver
Dim pop as Object    

Set sel = New Selenium.ChromeDriver

sel.Get URL
' Switch to iframe
Set iframe = sel.FindElementByTag("iframe", 10000)
sel.SwitchToFrame iframe, 5000

code...

' Where the popups sometimes show up
On Error Resume Next
sel.SwitchToDefaultContent
Set pop = sel.FindElementsByClass("popupText", 2000) *Error Could not locate class=popupText
On error goto 0

即使出现弹出窗口,如果我下次关闭错误恢复,也会收到此错误。以下是HTML:

<span class="popupText">
  <br />
  *Text* 
  <br />
  <br />
  *Text*
</span>

我已经尝试了其他几件事:不使用switchtodefaultcontent,而使用switchtoparenframe,似乎没有任何作用。

硒中还有一个.SwitchToAlert功能也不起作用...

strAlert = sel.SwitchToAlert.Text 'Get nothing
sel.SwitchToAlert.Accept          'Does not do anything

1 个答案:

答案 0 :(得分:0)

想出了一个解决办法,似乎硒vba插件有问题。解决方法:

sel.SwitchToDefaultContent
inner_text = Right(sel.PageSource, 1000)

相反,我在切换到默认内容(弹出文本恰好在html的末尾)之后抓取了page_source,然后继续检查inner_text变量中是否有弹出窗口(4个不同的pop_up选项)。然后从那里继续。

我认为这是VBA Selenium插件存在问题的原因是我使用Python复制了上面的代码,并且效果很好...所以不确定那里发生了什么。 VBA Selenium的日期大约为4年。