python selenium to click an element not visible
症状 在 我的MAC 上
Chrome PhantomJS 都是可以正常运行的 换到 Linux 服务器上 PhantomJS 就不行了
find_element_by_id
find_element_by_xpath
find_element_by_class 这些方法也是可以找到的 if
find_element_by_class_value: 是True .... 表示标签是可以找到 但是不可以操作
猜测是环境的问题: 都是用的最新的 PhantomJS 2.1.1
网上大多的解决方法是 设置 浏览器的大小 我不敢下结论 人家的回答是坑,但是在我这里尝试确实是没有用,有可能我写的分辨率 不是我服务的分辨率,所以才没有起到效果
解决办法:
1.由于我查找的是个a标签 是个超链接 用re.find_all() 找到当前的我需要的链接 然后再get一下 这个链接 ,是可以行的通的
这样做 完全隔离了
find_element_by_* 的方法了。绕过了 找标签 然后模拟点击
完事之后复盘:想找到一种通用的方法来解决这类问题(只是我这次是个超链接 我可以用 re 去找 ,如果是个button 该怎么办)
猜想1:
是不是因为鼠标没有动 没有激发某些JS 导致当前界面没有调用出来
操作 结果
然后模拟移动鼠标-- 失败
设置
execute_script(a.style.display ='block') 失败
设置鼠标左右键点点 失败
这些都是为了 放element 显示出来 看来真的绕过去这个 元素显示不显示的问题了
接下来放大招 绕过去 Python 去查找元素 直接使用JS
正好当前界面引用还是有 jQuery 这就好办了 定位当前 元素 a.click();
JS 模拟点击
建议 以后Python查找方法不好用直接改JS吧 改JS 兼容性只在 你算选的浏览器上 跟你所在的服务器 还是自己的PC 机 是没有关系的
程序改变生活
老规矩吧 QQ:973683374