Ошибка selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: 'using' must be a string при передаче локаторов

Пишу автотест для формы регистрации. При передаче локаторов через класс, вылетает исключение InvalidArgumentException. Если локатор вписывать непосредственно в тест (self.driver.find_element(By.XPATH, "//input[@name='firstName']").send_keys(self.valid_first_name) то всё работает, но мне нужно локаторы вынести отдельно(чтобы не писать их в каждом тесте)

сам код:

from selenium import webdriver

from selenium.webdriver.common.by import By

import time

class RTRegistrationLocators:

    LOCATOR_RT_REGISTRATION_BUTTON_REGISTER = (By.ID, "kc-register")

    LOCATOR_RT_REGISTRATION_FIRSTNAME = (By.XPATH, "//input[@name='firstName']")

    LOCATOR_RT_REGISTRATION_LASTNAME = (By.XPATH, "//input[@name='lastName']")

    LOCATOR_RT_REGISTRATION_NUMBER_OR_EMAIL = (By.ID, "address")

    LOCATOR_RT_REGISTRATION_PASSWORD = (By.ID, "password")

    LOCATOR_RT_REGISTRATION_PASSWORD_CONFIRM = (By.ID, "password-confirm")

    LOCATOR_RT_REGISTRATION_BUTTON_SUBMIT = (By.XPATH, "//button[@type='submit']")


class TestValidRegistrationRT:

    def setup(self):
        self.valid_first_name = 'Иван'
        self.valid_last_name = 'Иванов'
        self.fake_email = Faker().email()
        self.fake_password = Faker().password()
        self.fake_name = Faker().name()
        self.valid_password = 'Qwertyu0'
        self.open()

    def open(self):
        self.driver = webdriver.Chrome('/Users/dmitrijparsin/webdriver/chromedriver_107')
        self.driver.get("https://b2c.passport.rt.ru")
        time.sleep(10)

    def close(self):
        self.driver.quit()

    def teardown(self):
        self.close()

    def test_login(self):
        button_register = self.driver.find_element(RTRegistrationLocators.LOCATOR_RT_REGISTRATION_BUTTON_REGISTER)
        button_register.click()

Ответы (1 шт):

Автор решения: Steenkle

А вы пробовали импортировать класс локаторов? RTRegistrationLocators

Если да, импортировали ли Вы from selenium.webdriver.common.by import By в файл где хранятся селекторы?

Могу Вам посоветовать канал на ютубе "Art Vlad", постройте грамотный фреймворк, и никогда не столкнетесь с подобными ошибками, успехов Вам! Спасибо!

→ Ссылка