0

好的,我不确定是否有现成的解决方案可以解决我的问题,但基本上我尝试进行自动化测试的网站很容易出现“系统错误”。我有一个状态机,可以浏览各种网页以获得所需的结果。

问题的症结在于 selenium 在等待页面上的元素时执行 120 秒超时,但页面上的所有内容都是大的“系统错误”。

我已经设置了一些框架,可以扫描页面以查找系统错误,并在发现此错误时抛出 CriticalPageException。但是,我希望能够在 WebDriverWait 中扫描此错误。

有没有办法在 Java 版本的 Selenium 中做到这一点,或者我是 sol?

4

1 回答 1

0

我们有一个类似的问题。我们所做的是创建了一个自定义的 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;
}

编辑: getSearchElement() 只返回您的搜索上下文

于 2013-08-15T15:38:22.943 回答