老师你好,想问一下WebDriverWait.until()里面不止一个元素怎么办?
来源:3-12 强制、隐式、显示等待

慕田峪8226962
2020-04-17
如果我要查找的元素没有唯一的id,那我肯定要查找一堆元素出来,譬如用findElements(By.className),这个时候的话要显式等待应该怎么办?还是用“presenceOfElementLocated()” 吗?
public class BasePage {
public WebDriver driver;
public BasePage() {
}
public BasePage(WebDriver driver) {
this.driver = driver;
}
public WebElement getElement(String key) {
return new WebDriverWait(driver, 5)
.until(ExpectedConditions.presenceOfElementLocated(this.getByLocal(key)));
// return driver.findElement(this.getByLocal(key));
}
// 老师请看这里!!!
public List<WebElement> getElements(String key){
return (List<WebElement>) new WebDriverWait(driver, 5)
.until(ExpectedConditions.presenceOfElementLocated(this.getByLocal(key)));
// return driver.findElements(this.getByLocal(key));
}
public By getByLocal(String key) {
String locator = HandlePropertiesFile.getValues(key);
String locateBy = locator.split(">")[0];
String locateValue = locator.split(">")[1];
if (locateBy.equals("id")) {
return By.id(locateValue);
} else if (locateBy.equals("name")) {
return By.name(locateValue);
} else if (locateBy.equals("className")) {
return By.className(locateValue);
} else if (locateBy.equals("xpath")) {
return By.xpath(locateValue);
} else if (locateBy.equals("tagName")) {
return By.tagName(locateValue);
} else if (locateBy.equals("linkText")) {
return By.linkText(locateValue);
} else if (locateBy.equals("cssSelector")) {
return By.cssSelector(locateValue);
} else {
return null;
}
}
}
写回答
1回答
-
Mushishi
2020-04-18
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
你为啥不用这个呢?
还有你可以对查找方法进行二次封装。
你这里不是写勒么,你就去看上面这个等待是否对,如果对就返回下面的。
022020-04-18
相似问题