我是selenium Java的新手,有人可以帮忙并给我一个简单的例子来说明如何创建一个wait.until java命令吗?如果错误,请更正我的代码
import org.openqa.selenium.support.ui.WebDriverWait;
//lines of code
WebDriverWait waitVar = new WebDriverWait (driver, 1000);
waitVar.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"btnDraftReports\"]"))).click();
或者我应该使用它吗?
waitVar.until(ExpectedConditions.elementToBeClickable(By.id("btnDraftReports"))).click();
谢谢你,更多力量
答案 0 :(得分:0)
语法上两个表达式都是正确且有效的 Selenium的定位器策略 其中:
By.xpath("//*[@id=\"btnDraftReports\"]")
:此表达式使用 xpath 引擎。By.id("btnDraftReports")
:此表达式使用 id 属性。但是,一旦等待 ExpectedConditions 在调用click()
时返回元素,那么您应该使用elementToBeClickable()
方法而不是visibilityOfElementLocated()
方法如下:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id=\"btnDraftReports\"]"))).click();
//or
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.id("btnDraftReports"))).click();
现在,值得商榷的问题是使用哪个定位器id
或xpath
?
由于 Selenium 实际上 id
属性仍被视为最有效的定位策略。
答案 1 :(得分:0)
visibilityOfElementLocated 与 elementToBeClickable 行为明显不同。
何时使用:所有预期条件取决于方案。
visibilityOfElementLocated :当您想要等到网页上显示网页元素的可见性时,您可能想要使用此预期条件。它更多地是关于网络元素的可见性。
示例:
elementToBeClickable :当您想等到网页元素变为可点击时。它更多的是关于web元素的点击能力。
示例:
请考虑我认为您正确编写的代码。
希望这有助于您了解上述条件之间的基本区别。
答案 2 :(得分:0)
尝试以下代码
/* This method is used for wait until element found */
public void expliciteWait(WebElement element, int timeToWaitInSec, WebDriver driver) {
WebDriverWait wait = new WebDriverWait(driver, timeToWaitInSec);
wait.until(ExpectedConditions.visibilityOf(element));
答案 3 :(得分:0)
WebElement XYZ= driver.findElement(By.xpath("xpath")); WebDriverWait wait = new WebDriverWait(driver, 10); wait.until(ExpectedConditions.elementToBeClickable(XYZ)); XYZ.click;
为了获得更好的答案,您需要显示HTML