Я новичок в Python и Selenium и пытаюсь запустить автоматическое тестирование нашего веб-сайта. Я настраиваю тесты с использованием объектной модели страницы, чтобы изменения в локаторах нужно было обновлять только в одном месте. В рамках этого я настраиваю функцию, которая будет ждать, пока наша кнопка подписки станет доступной. Однако, когда я вызываю эту функцию, я получаю следующую ошибку:
Traceback (most recent call last):
File "click_subscribe_button_test.py", line 51, in test_subscribe_click
main_page.wait_subscribe_button_clickable()
File "page.py", line 64, in wait_subscribe_button_clickable
wait.until(EC.element_to_be_clickable((*MainPageLocators.subscribe_button)))
TypeError: __init__() takes 2 positional arguments but 3 were given
Я прочитал ряд связанных сообщений здесь и на других сайтах, и хотя они помогли мне приблизиться к решению проблемы, я все еще сталкиваюсь с указанной выше ошибкой. Соответствующий код приведен ниже, он из двух отдельных файлов, поскольку локаторы находятся в другом файле, чем объекты страницы.
page.py
def wait_subscribe_button_clickable(self):
subscribeElement = self.driver.find_element(*MainPageLocators.subscribe_button)
wait = WebDriverWait(self.driver,20)
wait.until(EC.element_to_be_clickable((*MainPageLocators.subscribe_button)))
locators.py
class MainPageLocators (object):
subscribe_button = (By.CSS_SELECTOR, 'li.last.leaf.subscribe')
Проблема, похоже, в том, как я вытаскиваю локаторы из отдельного файла, так как если я изменю
wait.until(EC.element_to_be_clickable((*MainPageLocators.subscribe_button)))
to
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'li.last.leaf.subscribe')))
Код работает как задумано.
Возможно, я чего-то не понимаю в том, как функция *MainPageLocators.subscribe_button извлекает локаторы, но я не смог отследить, что не так.
Любая помощь или руководство будет принята с благодарностью.