gpt4 book ai didi

python-3.x - Selenium 3 Firefox .click() 不工作

转载 作者:行者123 更新时间:2023-12-03 16:50:31 25 4
gpt4 key购买 nike

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

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

driver.find_element_by_xpath(locators["login.open"]).click()

定位器是:
locators["login.open"] = "//*[@href='//www.phptravels.net/admin']"

因为它在 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)

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

编辑(4):1)按照建议尝试使用 Nightly 构建,但不起作用。 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-heavy 页面上执行 .click() 的能力。

编辑(7): 将 .send_keys(Keys.RETURN) 与 Keys 库一起使用有效 ,但如果您使用的是 POM,则可能需要进行额外的重新配置。明确地做一些 time.sleep 会让你周围,但现在使用 Selenium 3 + Firefox/geckodriver 进行网络浏览器自动化仍然很脆弱。如果您需要测试 Firefox,请降级到上一个稳定版本 (2.53.6)(注意:最新版本的 Firefox 将无法使用)。

最佳答案

我有同样的问题,但有时 .click 有效,有时则无效。它不能很好地处理切换到新打开的窗口,以及其他一些怪癖,导致在 Selenium 2.53.4 中通过的测试在 Chrome、Safari 和 IE 中通过 Selenium 3 在 FireFox 中失败。我知道这不是很具体,但我已经在其他地方发布了寻找具体问题。

我正在使用 Ruby/Selenium/Capaybara。在使用 Selenium 3/Geckodriver/FF49 组合进行广泛测试后,我恢复到 Selenium 2.53.4/FF47.01。我的印象是 Selenium 3/Geckodriver 组合还不是很稳定,这可能包括也可能不包括 Capybara 与 Geckodriver 的兼容性。我很想错。我已经在互联网上搜索了任何有用的信息,但没有找到。

然而,我确实从 Selenium 3 的发布博客公告中找到了这条注释:“Mozilla 一直是实现 W3C WebDriver 协议(protocol)的领跑者。从好的方面来说,这暴露了随着规范的发展而存在的问题,但它也意味着很难跟踪 Firefox 的支持,因为他们的工程努力是前瞻性的,而不是支持 Selenium WebDriver 使用的当前有线协议(protocol)。目前,我们可以提供的最佳建议是让您尝试最新版本的 geckodriver 和 Selenium 在一起。”

关于python-3.x - Selenium 3 Firefox .click() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40080077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com