【问题标题】:Selenium with Firefox not clicking on elements located using XPath带有 Firefox 的 Selenium 没有单击使用 XPath 定位的元素
【发布时间】:2021-07-31 19:17:16
【问题描述】:

我有一个基于 Selenium Java 的自动化基础架构。大多数元素定位器都使用XPath,因为我们的网站使用了几个模板,其中元素只能根据其文本定位。
它在 Chrome 上运行得非常完美,但在 Firefox 上却不行。
最基本的操作 - element.click() 不适用于 Firefox 上的 Selenium,但它在 Chrome 上完美运行!
没有抛出异常,只是什么也没做。
我不使用任何非常复杂的xPath 表达式,主要是类似于//*[contains(text(),'Some unique text')] 的东西,它提供了一个清晰的唯一元素定位器,并且每个click() 在使用以下方法使元素可见后执行:

public void clickVisible(String xpath){
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xpath)));
    driver.findElement(By.xpath(xpath)).click();
}

在运行和调试测试时,我发现元素在 Firefox 上运行时也很快可见,但是 click() 根本不起作用。
如果我使用 css selector 找到这些元素,它可以在 Firefox 上完美运行!
我已经听说 xPath 引擎在每个浏览器中都不同,我在这里看到了几篇关于 xPath 相关问题的旧帖子,但主要是 IE,而不是 Firefox,而且大部分帖子都是多年前写的。
另外,我几年前使用过 Firefox,当时没有这样的问题!
我试图了解 Selenium 在 Firefox 上发生了什么,所以它没有为 xPath 定位的元素执行非常基本的命令?
我找不到任何明确的文档/解释。
This 帖子看起来很有趣,但我无法尝试设置 capability.setCapability("marionette", false);,因为我的 Firefox 选项是按以下方式设置的:

FirefoxProfile profile = new FirefoxProfile();
FirefoxOptions options = new FirefoxOptions();
profile.setPreference("browser.download.dir",downloadsPath);
--------
options.setProfile(profile);
driver = new FirefoxDriver(options);

【问题讨论】:

    标签: java selenium selenium-webdriver firefox xpath


    【解决方案1】:

    您是否在无头模式下运行测试。如果是这样,您必须通过在环境变量中设置屏幕来最大化屏幕。

     os.environ['MOZ_HEADLESS_WIDTH'] = '1920'
     os.environ['MOZ_HEADLESS_HEIGHT'] = '1080'
    

    如果不是 headless,请将 firefox 选项更新为以下大小以解决问题。

    firefoxOptions.AddArgument("--width=1920");
    firefoxOptions.AddArgument("--height=1080"); 
    
    • 阿琼

    【讨论】:

    • 不,我目前正在尝试以常规模式运行。
    • 那么你可以在火狐选项中添加宽高试试看
    • 我试过了。不幸的是,这没有帮助。
    • 请在系统环境变量中设置 MOZ_HEADLESS_WIDTH 和 HEIGHT。绝对是尺寸问题,很可能您的按钮将位于屏幕底部。
    • 但是为什么呢?我不在无头模式下运行。当我使用基于 css 的选择器时,它工作得很好。问题肯定在于 FF 上基于 xpath 的选择器
    猜你喜欢
    • 2018-01-05
    • 2021-02-23
    • 2021-10-21
    • 2016-02-19
    • 2021-04-11
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 2015-01-17
    相关资源
    最近更新 更多