好的,我不确定我的问题是否有现成的解决方案,但本质上,我试图在其上进行自动测试的网站很容易出现"系统错误"。我有一个状态机,它可以浏览各种网页以获得所需的结果。
问题的关键在于,selenium在等待页面上的元素时会超时120秒,但页面上的所有元素都是大的"系统错误"。
我已经设置了一些框架,可以扫描页面以查找系统错误,并在发现此错误时抛出CriticalPageException。但是,我希望能够在WebDriverWait中扫描此错误。
有没有一种方法可以在Selenium的Java版本中做到这一点,或者我是s.o.l。?
我们也遇到了类似的问题。我们所做的是创建一个自定义的waitForWebElement方法对网站进行民意调查,你可以做类似的
public WebElement waitForWebElement(final By by, final boolean isDisplayed) {
// Waiting 30 seconds for an element to be present on the page, checking
// for its presence once every 5 seconds.
Wait<SearchContext> wait = new FluentWait<SearchContext>(getSearchElement()).withTimeout(timeout, TimeUnit.SECONDS).pollingEvery(pollSeconds, TimeUnit.SECONDS).ignoring(NoSuchElementException.class);
WebElement webElement = wait.until(new Function<SearchContext, WebElement>() {
public WebElement apply(SearchContext search) {
try{
WebElement element = search.findElement(by);
catch(NoSuchElementException e){
if(CHECK_YOUR_ERROR_PRESENT){
throw CriticalPageException()
}else{
throw e;
}
}
return element;
}
});
return webElement;
}
EDIT:getSearchElement()只返回您的搜索上下文