Selenium [问题求助] div 的弹出框定位不能,调用 js 却无任何响应,使用的是 selenium+python

流火蝉羽 · 2016年09月02日 · 最后由 alam.zheng 回复于 2019年03月19日 · 2771 次阅读

就是点击某个按钮后会出现一个由 div 生成的弹出框(这个 div 标签在原本 html 中是没有的,点击后才在 body 下加载出来的一个新的),我想点击这个弹出框的 a 标签,但是使用 xpath、或者抓取所有的 iframe 标签来定位其中的 iframe 却提示找不到这个 iframe。
于是想调用 js 来执行,在浏览器控制台里面执行这个 js 是可以正常点击的,但是用 selenium+python 的时候调用 js 却提示 mde.item(...) is null;
代码如下

#点击此按钮后那个div弹出框便会出现
b.find_element_by_css_selector("div[class=\"col-md-4\"]").click()
time.sleep(3)

#调用js来操作弹出框的a标签
xuanzejs="mde=window.frames[1].document.querySelectorAll('a');mde.item(1).click();"
print xuanzejs
b.execute_script(xuanzejs)
time.sleep(3)

这个 python 调用 js 的时候和在浏览器的控制台输入执行 js 有什么不同呢

共收到 3 条回复 时间 点赞

补充一下,偶尔执行 js 的时候会什么效果都没有就执行完毕了,没有报错,但是页面上也并没有变化,a 标签也没有被点击

在 console 模式下运行试下
如果 consol 下成功,但是执行不成功,可能是 selenium 还没加载完页面,执行了命令,但是返回失败

alam.zheng 回复

我最近也在研究这个,发现页面加载完执行 js 成功,但是页面加载中,执行 js 虽然不成功,但是没报错
在研究怎么执行 js 后获取返回结果

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册