如果我在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
答案 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年。