Я использую Pycharm с моими автотестами Python для одностраничного приложения, где у меня есть страница пользователей, где есть блок пользователей с некоторыми полями ввода.Итак, html-код одного из полей:
<div data-v-1f9916c7="" class="el-input">
Когда я использую Python-консоль Python с окном выполненного geckodriver для отладки некоторых вещей, я пишу: wd.find_element_by_xpath("(//input[@type='text'])[4]").send_keys("123456")
и все работает - я вижу цифры внужное поле ввода.Затем я возвращаюсь к своему коду авто-тестов, где мы используем PageObject с локаторами, и мой локатор выглядит так: NAME = (By.XPATH,"(//input[@type='text'])[4]")
, а метод класса выглядит так:
class UsersPage(BasePage):
def set_name(self, name):
self.driver.find_element(*UsersPageLocators.NAME).send_keys(name)
И затем я запускаю свои тесты(также в PyCharm) и получите ошибку: selenium.common.exceptions.InvalidSelectorException: Message: Given xpath expression "//input[@type='text'])[4]" is invalid: SyntaxError: The expression is not a legal expression.
HTML-код для этого элемента не имеет ничего особенного:
<div data-v-1f9916c7="" class="el-input">
<input type="text" autocomplete="off" class="el-input__inner">
</div>
Пожалуйста, помогите мне понять, почему локатор xpath действителен в консоли python и недопустим в самих тестах?Может быть из-за разного типа использования «по»: find_element_by_xpath
и By.XPATH
?