MSJ*_*MSJ 7 firefox python-3.x selenium-webdriver geckodriver selenium3
由于我升级到最新的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无法运行).
我现在遇到了同样的问题,我尝试使用夜间构建,它开始工作,尽管我在尝试在准备好之前单击内容时遇到问题,但这比 Selenium 本身更重要。
当前的夜间构建版本是 52.0a1,您可以在这里找到它。
默认情况下,FirefoxDriver 仍将使用常规安装的 Firefox,因此您需要使用配置文件/选项/二进制文件创建驱动程序,我是这样做的(在 C# 中,但在 Python 中应该非常相似);
var binary = new FirefoxBinary(@"C:\Program Files (x86)\Nightly\firefox.exe");
Driver = new FirefoxDriver(binary, null);
我认为它可能是FirefoxDriver(binary: binary)
用 Python 编写的,但不完全确定。请注意,从 Selenium 3 开始,使用FirefoxBinary
FirefoxOptions 已被废弃,但它可以让您测试这是否是您目前的问题。
归档时间: |
|
查看次数: |
5138 次 |
最近记录: |