Поиск элемента по локатору с индексом
На сайте есть несколько подборок с одинаковым id, не могу понять где правильно расположить индекс, чтобы осуществлять поиск по нему
from BaseApp import BasePage
from selenium.webdriver.common.by import By
#Локаторы
class Locators:
LOCATOR_COLLECTION1 = (By.XPATH , '//a[@id="collection_link"]')[1]
#Поиск элементов
class SearchHelper(BasePage):
#Поиск коллекции горячая подборка
def click_button_collection1(self):
search_field = self.find_element(Locators.LOCATOR_COLLECTION1)
search_field.click()
Выводится ошибка
FAILED test.py::test_collection - TypeError: WebDriver.find_element() takes from 1 to 3
positional arguments but 27 were given
Ответы (2 шт):
Автор решения: Namerek
→ Ссылка
Вы в функцию вместо двух параметров пытаетесь передать второй элемент кортежа, являющийся строкой из 27 символов.
from BaseApp import BasePage
from selenium.webdriver.common.by import By
#Локаторы
class Locators:
LOCATOR_COLLECTION1 = By.XPATH , '//a[@id="collection_link"]'
#Поиск элементов
class SearchHelper(BasePage):
#Поиск коллекции горячая подборка
def click_button_collection1(self):
search_field = self.find_element(*Locators.LOCATOR_COLLECTION1)
search_field.click()
P.S. Не гарантирую, что вышеописанное заставит ваш код выполнять то, что Вы задумали, но конкретную ошибку, описанную в вопросе, исправит.
Автор решения: Alexandr
→ Ссылка
Решил таким способом:
from BaseApp import BasePage
from selenium.webdriver.common.by import By
#Локаторы
class Locators:
LOCATOR_COLLECTION = (By.XPATH , '//a[@id="collection_link"]')
#Поиск элементов
class SearchHelper(BasePage):
#Поиск коллекции горячая подборка
def click_button_collection1(self):
search_field = self.find_elements(Locators.LOCATOR_COLLECTION)[0]
search_field.click()