我的页面上有一个按钮,有时无法显示。我想让我的代码绕过它,但它不能与driver.findElement.isDisplayed()
一起使用。我在考虑ExpectedConditions.elementToBeClickable
,但我不知道如何使它成为布尔值。有些帮助吗?(当然,条件是返回错误,因为它不是布尔值)。
WebDriverWait wait = new WebDriverWait(driver, 10);
if(ExpectedConditions.elementToBeClickable(By.xpath("html//body//div[5]//div//div//form//div//div[1]//div[3]//div//div//div//input")).){
WebElement ex = driver.findElement(By.xpath("//*[@class='ng-pristine ng-untouched ng-valid'][@value='export'][@type='radio']"));
ex.click();
WebElement in = driver.findElement(By.xpath("html//body//div[5]//div//div//form//div//div[1]//div[3]//div//div//div//input"));
in.click();
}else{new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("html//body//div[5]//div//div//form//div//div[1]//div[3]//div//div//div//input")));}
'
答案 0 :(得分:1)
findElement
返回元素或抛出NoSuchElementException
,因此确定元素是否可见if条件您应该尝试使用findElements
而不是因为它返回WebElement列表或空列表,所以你只需检查size
如下: -
List<WebElement> elements = driver.findElements(By.xpath("your xpath"));
//Now check it size
if(elements.size() > 0 && elements.get(0).isDisplayed())
{
WebElement element = elements.get(0);
//Now do your further stuff with this element
}