首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等待HtmlElements

等待HtmlElements
EN

Stack Overflow用户
提问于 2015-12-02 23:23:32
回答 1查看 138关注 0票数 1

如果按钮不存在,则测试挂起的时间将超过5秒。

DefaultElementLocator中的方法findElement()被调用了大约63次!

块的嵌套越深,等待时间就越长。

在htmlElements中可以这样使用块吗?我做错了什么?

代码语言:javascript
复制
@Test
public void myTestFunc() {
    WebElement element = myPage.getMyForm()
                              .getSubForm()
                              .getButton()
                              .getWrappedElement();
    try {
        (new WebDriverWait(driver, 5))
            .until(ExpectedConditions.visibilityOf(element));
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}
public class MyPage {
    @FindBy(className = "...")
    private MyForm myForm;

    public MyPage(WebDriver driver){
        PageFactory.initElements(new HtmlElementDecorator(driver), this);
    }

    public MyForm getMyForm() {
        return myForm;
    }
}
public class MyForm extends HtmlElement {
    @FindBy(className = "...")
    private MySubForm mySubForm;

    public MySubForm getMySubForm() {
        return mySubForm;
    }
}
public class MySubForm extends HtmlElement {
    @FindBy(className = "...")
    private MyButtonWrap button;

    public MyButtonWrap getButton() {
        return button;
    }
}
public class MyButtonWrap extends Button {
    public MyButtonWrap(WebElement wrappedElement) {
        super(wrappedElement);
    }
    // ...
}
EN

回答 1

Stack Overflow用户

发布于 2016-06-06 21:18:37

我认为这个问题与默认设置为5秒的隐式等待有关。有关更多详细信息,请参阅this issue

我认为发生的情况是,当您尝试获取wrappedElement时:

代码语言:javascript
复制
myPage.getMyForm().getSubForm().getButton().getWrappedElement();

它隐式地为每个@FindBy等待5s。

尝试将打印语句放在打印语句中,并查看时间花在哪里,例如:

代码语言:javascript
复制
public void myTestFunc() {
    System.out.println("start");
    element = myPage.getMyForm().getSubForm().getButton().getWrappedElement();
    System.out.println("got element");
    try {
        (new WebDriverWait(driver, 5)).until(visibilityOf(element));
        System.out.println("Finished waiting successfully");
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34046427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档