Я использую Selenium и Python, и я не знаю, что не так с моим кодом.
Я пытаюсь использовать шаблон объекта страницы. И в моем классе о странице у меня есть этот метод:
def more_than_100(self):
locator = Locators(self.driver)
number_of_items = WebDriverWait(self.driver, 10).until(
EC.element_to_be_clickable((By.XPATH, locator.return_product_locator())))
number_of_items.clear()
number_of_items.send_keys('101')
WebDriverWait(self.driver, 10).until(
EC.element_to_be_clickable((By.XPATH, "//h4[text()='Okulary']/following::button[1]"))).click()
и в файле Locators у меня есть 2 метода:
def __init__(self, driver):
self.driver = driver
def return_product_list_input(self):
titles = WebDriverWait(self.driver, 5).until(EC.visibility_of_all_elements_located(By.XPATH, "//h4[text()]"))
for title in titles:
products.append(title.text)
return products
def return_product_locator(self):
locator_product_list_input = "//h4[text()='" + self.return_product_list_input().products[0] + "']/following::input[1]"
return locator_product_list_input
что я хочу сделать, это получить все названия продуктов, положить их в список, а затем использовать эти имена для генерации xpath. (в будущем я хочу добавить немного случайности, чтобы подобрать случайный продукт), но сейчас у меня есть
File "...\Locators.py", line 12, in return_product_list_input
titles = WebDriverWait(self.driver, 5).until(EC.visibility_of_all_elements_located(By.XPATH, "//h4[text()]"))
TypeError: __init__() takes 2 positional arguments but 3 were given
Что мне делать с этой ошибкой? Возможно, проблема в xpath для H4, но я не знаю, как правильно написать.