Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Является ли общепринятой практикой создавать generic method для нахождения элемента?

design-patterns
locators
framework
webdriver
Теги: #<Tag:0x00007f7b64eea8b8> #<Tag:0x00007f7b64eea750> #<Tag:0x00007f7b64eea5c0> #<Tag:0x00007f7b64eea3e0>

(Oleksandr Molodetskyi) #1

Смотрю обучающий курс по Selenium Webdriver на Udemy. Автор курса, в частности, создает generic method который является оберткой для findElement и принимает на входе локатор и тип локатора и на выходе выдает найденный элемент.
Я для себя не увидел больших преимуществ такого метода перед использованием findElement, но, возможно, я просто чего-то не знаю. Кто-то тоже так делает? Это общепринятая практика?


(Maxim Andryushchenkov) #2

Мне кажется, вам как не крути придется методы “из коробки” как-то оборачивать, ибо сами по себе они мало что дают. Можно например так обернуть и словить кучу плюсов от этого метода:

from selenium.webdriver.support.ui import WebDriverWait as WDWait
from selenium.webdriver.support import expected_conditions as EC

    def wait_and_get_element(self, element_name, timeout=15, loc_type='xpath', by_locator=False):
        if not by_locator:
            locator = self.locators[element_name]
        else:
            locator = element_name
        WDWait(self.driver, timeout).until(
            EC.presence_of_element_located((loc_type, locator))
        )
        return self.driver.find_element(loc_type, locator)