Перейти к содержимому

Фотография

Локаторы в Selenium.

selenium python

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 Aredel

Aredel

    Новый участник

  • Members
  • Pip
  • 10 сообщений
  • ФИО:Смирнова Валерия Владимировна


Отправлено 08 октября 2018 - 13:57

Пишу автотесты для SPA, и возник такой вопрос. Есть у нас, скажем, страница с пользователями, где можно создать нового, есть ряд полей типа input, куда мы вводим данные - имя, логин, пароль, и т.д. Собственно, пишу я на python, а в качестве IDE у меня PyCharm - внутри него есть удобный дебаггер, а также питоновская консоль, которую я использую для отладки тех или иных вещей. Например, локаторов веб-элементов. Суть кейса: в консоли я запускаю geckodriver и ввожу код:

wd.find_element_by_xpath("//input[@type='text'])[4]").send_keys("123456)

- он соответствует некому полю ввода, и все работает - в открытом окне драйвера в нужном поле вводятся нужные цифры.

Потом, отладив этот и другие локаторы такого типа, я копирую их в код непосредственно тестов. Мы используем PageObject, в файле локаторов объявляем их списком внутри класса, и выглядят они например так:

NAME = (By.XPATH,"(//input[@type='text'])[4]")

потом класс имплементируется в код теста, ну и все как обычно.

Итак, вопрос: почему в консоли данный тип локаторов работает прекрасно, а при запуске тестов я получаю ошибку:

selenium.common.exceptions.InvalidSelectorException: Message: Given xpath expression "//input[@type='text'])[5]" is invalid: SyntaxError: The expression is not a legal expression.

Только ли потому что тип объявления слегка разный? (find_by_xpath и By.XPATH)


  • 0

#2 Aredel

Aredel

    Новый участник

  • Members
  • Pip
  • 10 сообщений
  • ФИО:Смирнова Валерия Владимировна


Отправлено 08 октября 2018 - 14:03

HTML-код, ничего особенного:

<div data-v-1f9916c7="" class="el-input">
<input type="text" autocomplete="off" class="el-input__inner">
</div>

  • 0

#3 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 08 октября 2018 - 14:05

Круглые скобки у вас часть синтаксиса find_element_by_xpath, а Вы дальше скопировали как часть локатора.

 

 

 

 

wd.find_element_by_xpath("//input[@type='text'])[4]").send_keys("123456)

Вся строка странная и явно у Вас не так в коде написана. К примеру, в send_keys кавычки не закрыты.

А в локаторе закрывающая круглая скобка лишняя (собственно из-за скобки и ругается).


  • 0

#4 Aredel

Aredel

    Новый участник

  • Members
  • Pip
  • 10 сообщений
  • ФИО:Смирнова Валерия Владимировна


Отправлено 08 октября 2018 - 14:30

Круглые скобки у вас часть синтаксиса find_element_by_xpath, а Вы дальше скопировали как часть локатора.

 

 

 

 

wd.find_element_by_xpath("//input[@type='text'])[4]").send_keys("123456)

Вся строка странная и явно у Вас не так в коде написана. К примеру, в send_keys кавычки не закрыты.

А в локаторе закрывающая круглая скобка лишняя (собственно из-за скобки и ругается).

Уффф да. Кавычки я уже тут забыла закрыть, в коде все ок, а насчет скобки мне правильно уже подсказали. Извините за невнимательность, вопрос закрыт. :)


  • 0



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных