【发布时间】: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