我在 Python 脚本上使用selenium来获取一些数据并在javascript / ajax呈现的网站上执行一些脚本,这意味着一些按钮或脚本将更改DOM而不加载新页面或更改网址。
情况是:加载页面后,我执行以下脚本:
driver1.execute_script("javascript:changeOption('a', 'b','otherPage.html');")
changeOption是直接在HTML脚本标记内编写的脚本。它有效,脚本将导致DOM发生变化。
现在,DOM已经改变,并且有直接在HTML上编写的新脚本,我可以在Chrome的检查器“Elements”选项卡中清楚地看到。我等了几秒钟,然后尝试运行一个新脚本:
driver1.execute_script("javascript:filterOption(0);")
我收到错误!它说这个脚本'filterOption'不存在。
经过一番调查,我注意到selenium没有意识到DOM已经改变,并且页面内部有新的元素和脚本!这就是它说新脚本不存在的原因。
到目前为止我尝试了什么:
我在这里做了一些研究,并在文档中寻找一些方法来强制selenium再次读取DOM而不刷新页面,因为刷新会导致它返回到第一页并丢失所有更改。看起来没有办法做到这一点,我找到的每一个答案都不同而且没有用。
您对我能做什么有什么建议吗,Selenium会注意到DOM上有新脚本?
谢谢!
P.S:我正在使用最新的硒与Python 3和Chrome。
答案 0 :(得分:0)
<强>解决!强>
事实证明新代码是在iFrame中呈现的,这就是为什么selenium以前无法看到它。