pav*_*lou 16 selenium webdriver selenium-webdriver
在我的应用程序中,当我打开页面XI期望看到元素A或元素B.它们被放置在DOM中的不同位置并且可以使用它们的ID找到,例如 driver.findElement(By.id("idA"))
如何让webdriver找到A或B?
driver.findElements(By)当找到至少一个元素时,有一种方法会停止等待,但这种方法迫使我对A和B使用相同的定位器.
可靠地找到A或B的正确方法是什么,这样我就不必等待隐式超时?
eug*_*kov 19
id为I1的元素或id为I2的元素
XPath的: //E1[@id=I1] | //E2[@id=I2]
CSS: css=E1#I1,E2#I2
driver.findElement(By.xpath(//E1[@id=I1] | //E2[@id=I2]))
driver.findElement(By.cssSelector(E1#I1,E2#I2))
Run Code Online (Sandbox Code Playgroud)
不要忘记fluentWait机制:
public WebElement fluentWait(final By locator){
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(30, TimeUnit.SECONDS)
.pollingEvery(5, TimeUnit.SECONDS)
.ignoring(org.openqa.selenium.NoSuchElementException.class);
WebElement foo = wait.until(
new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return driver.findElement(locator);
}
}
);
return foo;
};
Run Code Online (Sandbox Code Playgroud)
恕我直言的问题解决方案如下:
fluentWait(By.xpath(//E1[@id=I1] | //E2[@id=I2]));
fluentWait(By.cssSelector(E1#I1,E2#I2))
Run Code Online (Sandbox Code Playgroud)
仅供参考:这是很好的xpath,cssSelector手册
希望这能帮助你.
| 归档时间: |
|
| 查看次数: |
17701 次 |
| 最近记录: |