小编MSJ*_*MSJ的帖子

Selenium 3 Firefox .click()无效

由于我升级到最新的Selenium版本,我的Firefox驱动程序无法正常工作.未能通过搜索Google/Stack找到答案我希望有人在这里有答案.

我已经构建了一个页面对象模型,用于登录网页,单击管理站点并填写用户名/密码+提交.此代码是为Selenium 2.53.6编写的,但仍适用于IE和Chrome.失败的部分是这行代码:

driver.find_element_by_xpath(locators["login.open"]).click()
Run Code Online (Sandbox Code Playgroud)

定位器是:

locators["login.open"] = "//*[@href='//www.phptravels.net/admin']"
Run Code Online (Sandbox Code Playgroud)

既然它在IE和Chrome中运行,那么Firefox不能再让我感到困惑.click()了吗?

我没有在我的控制台中收到错误消息,它只是没有单击管理站点按钮.这可能与Selenium 3/geckodriver的给定Firefox版本有关吗?

所有驱动程序都是最新的 pip

我正在使用这个网站练习我的Selenium:http://phptravels.com/demo/

编辑(1):我尝试使用Firefox版本48和49 - 仍然无法正常工作

编辑(2):geckodriver配置了声明的Firefox二进制文件,但驱动程序仍未执行 .click()

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('path/to/binary')
driver = webdriver.Firefox(firefox_binary=binary)
Run Code Online (Sandbox Code Playgroud)

编辑(3):我使用is_displayed()检查xpath定位器是否存在该元素,然后返回True.所以我知道它可以找到元素.

编辑(4):1)尝试按照建议的夜间构建,不工作.2)尝试使用find_element_by_link_text,也无法正常工作.3)尝试了各种版本的geckodriver(10.0,11.0,11.1为32和64位所有版本)

编辑(5):"Firefox的插件容器已停止工作"每次测试用例失败时都会始终生成.

编辑(6):问题的可能解决方案:我在另一个网站上做了另一个测试,Firefox成功执行了.click().在.click()失败的第一个目标网页上是一个巨大的JavaScript,当你打开页面时运行.这可能会搞砸geckodriver在javascript页面上执行.click()的能力.

编辑(7):使用带键库的.send_keys(Keys.RETURN),但如果您正在使用POM,则可能需要进行其他重新配置.明确地做一些时间.睡眠会让你解决,但目前使用Selenium 3 + Firefox/geckodriver进行网页浏览器自动化仍然很脆弱.如果你需要测试Firefox,请降级到最后稳定版本(2.53.6)(注意:最新版本的Firefox无法运行).

firefox python-3.x selenium-webdriver geckodriver selenium3

7
推荐指数
1
解决办法
5138
查看次数