Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Как написать свою реализацию WebElement?

java
selenium
webdriver
Теги: #<Tag:0x00007fedbfe2ab08> #<Tag:0x00007fedbfe2a950> #<Tag:0x00007fedbfe2a7c0>

(Yerassyl Turlygazhy) #1

Для чего: хочу иметь дополнительные методы у веб элемента, которые нужны только в моем проекте. На пример клик не стандартный и тд.

Что пробовал: первое что пришло в голову унаследоваться от RemoteWebElement

public class MyElement extends RemoteWebElement {
}

но код MyElement element = (MyElement) driver.findElement(By.cssSelector(“body”)); ругается

…ClassCastException: …RemoteWebElement cannot be cast to …MyElement


(Василь Головчак) #2

driver.findElement(By.cssSelector(“body”)) повертає обєкт RemoteWebElement, тому і маєте ексепшин при приведенні до MyElement.

Зазвичай свої елементи реалізовуються приблизно так:

public class MyElement implements WebElement {

    private final WebElement element;

    public MyElement(WebElement element) {
        this.element = element;
    }

   //additional methods ...
}

і тоді в коді

MyElement element = new MyElement(driver.findElement(By.cssSelector("body")));

(Yerassyl Turlygazhy) #3

к сожаленью этот вариант не подходит, нужно через PageFactory работать, то бишь такой код должен срабатывать

@FindBy(что то)
private MyElement element;


(Dema W) #4

Тогда пробуйте так, например:



#5

Это уже сделано:
http://htmlelements.qatools.ru/


(asolntsev) #6

Это уже сделано:
http://ru.selenide.org

См. Конкретный пример: https://github.com/codeborne/selenide/tree/master/src/test/java/integration/customcommands