Selenium 代码不适用于在 Safari、Firefox 和 Chrome 中定位元素
Selenium code is not working for locating an element in Safari, working in Firefox and Chrome
有人可以帮助谁在 Selenium WebDriver 上工作过吗?
我一直在尝试在 Mac 机器上使用 Selenium WebDriver 自动化测试场景。当我将 Safari 定义为我的浏览器时,我收到错误 "An element could not be located on the page using the given search parameters"
,即使该元素存在于 java 代码 Issues/Bug 的页面上。
注意:当我们选择Firefox和Chrome作为浏览器时,可以找到相同的元素。有一些类似的答案,但其中 none 是在谈论 Safari 浏览器和 Mac 机器。
试着稍等一下。使用流利的等待如下:-
WebElement waitsss(WebDriver driver, By elementIdentifier){
Wait<WebDriver> wait =
new FluentWait<WebDriver>(driver).withTimeout(60, TimeUnit.SECONDS)
.pollingEvery(1, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class);
return wait.until(new Function<WebDriver, WebElement>()
{
public WebElement apply(WebDriver driver) {
return driver.findElement(elementIdentifier);
}
});
}
等待应该适合您。如果问题仍然存在,则使用 JavascriptExecutor
。会直接通过JS来操作。它应该工作。我给出了一个使用 JavascriptExecutor
单击任何元素的示例
WebElement element = driver.findElement(By.id("gbqfd"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
希望对您有所帮助:)
有人可以帮助谁在 Selenium WebDriver 上工作过吗?
我一直在尝试在 Mac 机器上使用 Selenium WebDriver 自动化测试场景。当我将 Safari 定义为我的浏览器时,我收到错误 "An element could not be located on the page using the given search parameters"
,即使该元素存在于 java 代码 Issues/Bug 的页面上。
注意:当我们选择Firefox和Chrome作为浏览器时,可以找到相同的元素。有一些类似的答案,但其中 none 是在谈论 Safari 浏览器和 Mac 机器。
试着稍等一下。使用流利的等待如下:-
WebElement waitsss(WebDriver driver, By elementIdentifier){
Wait<WebDriver> wait =
new FluentWait<WebDriver>(driver).withTimeout(60, TimeUnit.SECONDS)
.pollingEvery(1, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class);
return wait.until(new Function<WebDriver, WebElement>()
{
public WebElement apply(WebDriver driver) {
return driver.findElement(elementIdentifier);
}
});
}
等待应该适合您。如果问题仍然存在,则使用 JavascriptExecutor
。会直接通过JS来操作。它应该工作。我给出了一个使用 JavascriptExecutor
WebElement element = driver.findElement(By.id("gbqfd"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
希望对您有所帮助:)