Можно ли получить экземпляр драйвера внутри HtmlBlock в HtmlElements?
Я использую HtmlElements
( https://github.com/yandex-qatools/htmlelements) фреймворк для моих веб-тестов на Java. Можно ли получить экземпляр веб-драйвера внутри HtmlBlock
? Например, реализовать дополнительную логику в некоторых полях или реализовать функцию для ожидания ajax
полный.
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
Как я вас понимаю. Вам нужен WebDriver в вашем классе блоков страниц, а не в классе страниц.
Простой, но не элегантный способ - создать статическую переменную и сохранить в ней экземпляр WebDriver, чтобы получить возможность использовать WebDriver в любом месте вашего кода.
Кроме того, я полагаю, вы экземпляр Pages в вашем тесте и в конструкторе страниц, который вы вызываете
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);
}
Я не уверен во втором варианте, но что-то вроде этого должно работать.