0

我有一个场景,我有 29 个测试用例。所有测试用例在独立运行时都会弹出新的firefox窗口并运行完成。但是,当我将测试用例(全部 29 个)组合到一个测试套件中时,我会收到“无法定位元素”的随机错误。如果我多次运行测试套件,我可以看到不同的测试用例在不同的地方随机失败。注意 - 在单击它们之前,我正在等待每个元素的可见性大约 100 秒。代码看起来像 -

    WebElement myDynamicElement = (new WebDriverWait(driver, 100))
    .until(new ExpectedCondition<WebElement>() {
    @Override
    public WebElement apply(WebDriver driver) {
    return driver.findElement(element);
    }

有人可以建议吗?是否推荐使用较小的测试套件?

4

1 回答 1

1

到目前为止还没有遇到类似的问题类型。恕我直言,尝试使用更强大的等待机制fluentWait

public WebElement fluentWait(final By locator){
            Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
                    .withTimeout(30, TimeUnit.SECONDS)
                    .pollingEvery(5, TimeUnit.SECONDS)
                    .ignoring(org.openqa.selenium.NoSuchElementException.class);
            WebElement foo = wait.until(
                    new Function<WebDriver, WebElement>() {
                        public WebElement apply(WebDriver driver) {
                            return driver.findElement(locator);
                        }
                    }
            );
            return  foo;              }     ;

这是有关流利等待的文档

用法如下:

String cssSelectorElement ="blablablab";
String xPathElement = "balblabla";

fluentWait(By.cssSelector(cssSelectorElement)).click()
//fluentWait(By.cssSelector(cssSelectorElement)).getText();

fluentWait(By.xpath(xPathElement)).click()
//fluentWait(By.xpath(xPathElement)).getText();

不要忘记在您工作的 IDE(IDEA、Eclipse、NetBeans)中逐步调试。

于 2012-10-23T15:23:56.133 回答