java - 等待 HtmlElements

标签 java htmlelements

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

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

block 嵌套越深,等待时间越长。

是否可以在 htmlElements 中以这种方式使用 block ? 我做错了什么?

@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);
    }
    // ...
}

最佳答案

我认为问题与默认设置为 5 秒的隐式等待有关。请参阅this issue了解更多详情。

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

myPage.getMyForm().getSubForm().getButton().getWrappedElement();

它隐式等待每个 @FindBy 5 秒。

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

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();
    }
}

关于java - 等待 HtmlElements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34046427/

相关文章:

java - 未正确定义ubuntu java_home上的maven2

java - 内部错误;无法实例化 <class>.<init>

html - 使用 CSS 将所有 html 元素(整个页面)旋转 90 度?

javascript - Typescript:将 HTMLElement 转换为 Node

java - Matrix Toolkits Java 和 Netlib-Java 的文档在哪里?

java - OnEditorActionListener() 工作但无法从 EditText 获取文本

java - setCache() 和 CacheHint 如何在 JavaFX 中协同工作?

javascript - 如何从javascript查询选择器模板对象

reactjs - 如何将 HTML 元素添加到 JavaScript 对象中并在 React 中使用