4 回答
TA贡献1853条经验 获得超6个赞
始终设置隐式等待。考虑到用户体验和性能,等待超过1分钟是没有意义的。
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
您还可以使用 try catch 来检查元素。
public boolean isElementWithXPathExist(String theXpath) {
try {
WebDriverWait wait = new WebDriverWait(driver,30);
wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath(theXpath))));
}catch(NoSuchElementException e) {
return false;
}catch(TimeoutException eT) {
return false;
}
return true;
}
希望这会有所帮助
TA贡献1859条经验 获得超6个赞
我的脚本等待的大约时间为 10 到 15 分钟似乎您以不适当的方式应用了隐式/显式等待。
isDisplay()
函数在 DOM 中存在的元素处于隐藏或可见状态时工作。如果元素不存在,则明显的错误是 。NoSuchElementException
在这里,您可以使用解决方案;首先在页面对象中更改,然后按如下方式创建函数:WebElement title_DuplicateRecordsDetected
List<WebElement> title_DuplicateRecordsDetected
public boolean Contact_DuplicateDetection(){ return title_DuplicateRecordsDetected.isEmpty() ? false : true; }
TA贡献1803条经验 获得超3个赞
非常感谢您的积极回复。
我找到了解决方案。在这里
public boolean verifyContactCreation() throws InterruptedException
{
driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
if(!driver.findElements(By.xpath("//button[@aria-label='Assign']")).isEmpty())
{
return true;
}
else
{
return false;
}
}
使用查找元素而不是查找元素对我有用。同样重要的是,需要应用 0 秒的隐式等待。现在,我的脚本立即失败(如果找不到元素),而无需等待很长时间。
添加回答
举报