是否可以在HtmlElements中获取HtmlBlock中的驱动程序实例?

时间:2014-10-14 08:47:45

标签: selenium htmlelements

我正在使用HtmlElementshttps://github.com/yandex-qatools/htmlelements)框架进行Java网络测试。是否可以在HtmlBlock内获取webdriver的实例? 例如,在某些字段中实现额外的逻辑或实现一个等待ajax完成的函数。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

简单的方法,但不优雅,是创建一个静态变量并在其中保存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);
}

我不确定第二种变体,但这样的事情应该有用。