3

我正在为我的 Java webtests 使用HtmlElements( https://github.com/yandex-qatools/htmlelements ) 框架。是否可以在里面获取 webdriver 的实例HtmlBlock?例如,在某些字段中实现额外的逻辑或实现等待ajax完成的功能。

4

2 回答 2

2

看看这个代码片段:

@Name("Search form")
@FindBy(xpath = "//form[@class='f1']")
public class SearchArrow extends Test1 {
    public WebDriver driver;
}

public class SearchPage {
    @FindBy(xpath = "//form[@class='f1']")
        private SearchArrow searchArrow;

    public SearchPage(WebDriver driver) {
        HtmlElementLoader.populatePageObject(this, driver);
        searchArrow.driver = driver;
    }
}

原文:https ://gist.github.com/artkoshelev/4751a4f1b34211e43f4e

于 2014-10-14T08:50:21.633 回答
0

据我了解你。您在页面块类中需要 WebDriver,而不是在 Page 类中。

简单但不优雅的方法是创建一个静态变量并在其中保存 WebDriver 实例,以便能够在代码中的任何位置使用 WebDriver。

另外我猜你在你的测试和你调用的页面构造函数中实例化页面

    HtmlElementLoader.populatePageObject(this, driver);

但我认为你可以尝试手动初始化你的块。

class Page {
    @FindBy(...)
    HtmlBlock block;

   public Page(){
       HtmlElementLoader.populatePageObject(this, driver);
       this.block = new HtmlBlock(driver);
   }
}

并在 HtmlBlock 创建将 WebDriver 保存到本地字段的构造函数。

public HtmlBlock(WebDriver driver){
    this.driver = driver;
    HtmlElementLoader.populatePageObject(this, driver);
}

我不确定第二个变体,但这样的东西应该可以工作。

于 2015-09-11T11:24:01.343 回答