首页 > 解决方案 > 如何延迟测试以使页面完全加载?

问题描述

我使用io.qameta.atlas,测试第一个复选框后如何延迟?这是测试:

    @Test
public void produrtTest(){
    onSite().onMainPage().getButton().findElement(By.xpath("//*[@id=\"-category-section\"]/div/ul/li[1]/label/span")).click();
    onSite().onMainPage().getButton().findElement(By.xpath("//*[@id=\"- 
category-section\"]/div/ul/li[2]/label/span")).click();

   }

我用@Retry annotation(timeout = 20, polling = 5000)20 秒等待页面加载,但没有暂停。

如何使用waitUntil()方法也不清楚。

标签: javajunit

解决方案


在您使用的工具的最首页,有以下部分:

等待页面加载。有一个特殊的 shouldUrl(Matcher url) 等待页面当前 url 和 document.readyState 标志的条件。

@BaseUrl("http://www.base.url/search")
public interface SearchPage extends WebPage {

     @Description("Account button")
     @FindBy("//div[@class = 'account-button']")
     AtlasWebElement accountButton();
}

@BaseUrl("http://www.base.url/account")
public interface AccountPage extends WebPage {

     //elements for account page here
}

等待单个元素的条件。AtlasWebElement 有两种不同的等待扩展方法。

首先 - waitUntil(Matcher matcher) 等待可配置的超时并在传递的匹配器中轮询某些条件,如果条件不满足则抛出 java.lang.RuntimeException。

第二 - should(Matcher matcher) 在传递的匹配器上以相同的方式等待,但抛出 java.lang.AssertionError 代替。

其中之一应该满足您的需求,具体取决于您在等待什么(您没有指定)。


推荐阅读