我正在使用HtmlElements
(https://github.com/yandex-qatools/htmlelements)框架进行Java网络测试。是否可以在HtmlBlock
内获取webdriver的实例?
例如,在某些字段中实现额外的逻辑或实现一个等待ajax
完成的函数。
答案 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;
}
}
答案 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);
}
我不确定第二种变体,但这样的事情应该有用。