gpt4 book ai didi

selenium - 在 webdriver 中找到两个元素中的任何一个

转载 作者:行者123 更新时间:2023-12-03 14:45:43 24 4
gpt4 key购买 nike

在我的应用程序中,当我打开页面 X 时,我希望看到元素 A 或元素 B。它们位于 DOM 中的不同位置,可以使用它们的 id 找到,例如 driver.findElement(By.id("idA"))
如何让 webdriver 找到 A 或 B?

有方法driver.findElements(By)当找到至少一个元素时它将停止等待,但是这种方法迫使我对 A 和 B 使用相同的定位器。

可靠地找到 A 或 B 的正确方法是什么,这样我就不必等待隐式超时?

最佳答案

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))

不要忘记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;
};

你可以获得更多关于fluentWait的信息 here

恕我直言,您的问题的解决方案如下:
fluentWait(By.xpath(//E1[@id=I1] | //E2[@id=I2]));
fluentWait(By.cssSelector(E1#I1,E2#I2))

仅供引用: here很好的 xpath,cssSelector 手册

希望这可以帮助你。

关于selenium - 在 webdriver 中找到两个元素中的任何一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13018530/

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