Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как написать правильный локатор на WebDriver для vk.com?


(Sergey_Kot) #1

Привет.

Изучаю простейшие действия с Selenium WebDrvier. В выдуманном тесте: “Зайти в вк - найти пользователя - написать сообщение - отправить - проверить факт отправленного сообщения” не могу разобраться с локатором там где нужно вводить текст сообщения.
Например, Selenium IDE даже не записывает данный шаг - переход в окно сообщения и печатание самого текста.
Пытался самостоятельно разобраться с самим локатором, но безрезультатно.
Скорее всего, проблемой может быть:

  • не отрендерился элемент;
  • поменял свой идентификатор;
  • находится в другом фрейме;

Кто подскажет в чем проблема конкретно?


(Mykhailo Poliarush) #2

Несколько замечаний к оформлению поста:

  1. Создавайте более информативное название темы
  2. Создавайте тему в нужной категории

Для того чтобы понять, как написать локаторы, посмотрите видео. Потом попробуйте создать локатор. А потом напишите, если не получилось.


(Сергей Блохин) #3

Chrome умеет определять xpath элемента.
http://titnet.ru/S44d — копируете xpath нужного элемента.
Далее всё просто.

require 'selenium-webdriver'

driver = Selenium::WebDriver.for :chrome
element = driver.find_element :xpath, '//*[@id="quick_email"]'
element.clear
element.send_keys 'foo@example.com'

(Sergey_Kot) #4

Спасибо, учту.
Видео просмотрел, из нового узнал немного о CSS-селекторах.
Не смог определить верный локатор ( т.е., что бы я мог написать команду, например:

selenium.type("<локатор>", "Test Hello!");
selenium.click("id=im_send");

которая найдем элемент, напечатает текст и нажмет на кнопку “отправить”).

У меня тест проходит как пасс, но реально сообщение не отправляется.


(Sergey_Kot) #5

Спасибо, но я знаю как пользоваться.
Вопрос был не совсем в этом.


(Mykhailo Poliarush) #6

Ну тогда прикладывайте в http://pastebin.com/ пример вашего html кода, без него дальше разбираться невозможно.


(Sergey_Kot) #7

Пример приложил на Java.


(Mykhailo Poliarush) #8

Нужен не код теста, а код страницы, где вы что-то ищите


(Sergey_Kot) #9

Сорри. [Приложил][1].
[1]: http://pastebin.com/uGTKw3CJ
Нужно смотреть элемент и все что в нем (строки 58-69):

div id="im_txt_wrap5217047"

Спасибо большое за помощь!


(Александр Таранков) #10

Какой вы хотите конкретный ответ на свой абстрактный вопрос? Ответить на ваш вопрос можно только путем самостоятельного написания теста для vk.com, чего никто специально чтоб вам помочь делать с большой вероятностью не будет.

Сформулируйте конкретный вопрос, так вы скорее получите ответ. А пока, предложенные вами варианты вы и сами прекрасно сможете проверить, Firebug-ом умеете пользоваться?

Если хотите заниматься автоматизацией, вам просто необходимо самостоятельно научиться находить ответы на вопросы типа “почему драйвер не видит элемент”, потому что этот вопрос у вас будет возникать постоянно.

Поэтому сейчас первым делом проверьте все имеющиеся у вас гипотезы. Потом все вновь появившиеся гипотезы и так до тех пор пока все ваши идеи не иссякнут.

И только после того как вы в отчаянии решили прибегнуть к помощи сообщества, предоставьте всю необходимую информацию:

  • код теста
  • код html
  • скриншоты
  • что вы уже пытались сделать и у вас не получилось
  • и т.д.

Прям как в хорошем багрепорте, ага.

P.S. для инфо: то на чем вы пишете тест называется Selenium != WebDriver. WebDriver - совсем другой продукт


(Mykhailo Poliarush) #11

Не знаю, как вы смотрели, но из этого кода четко видно что есть id, если он генерируется динамически, тогда надо брать css или xpath и строить выражение относительное элементов, которые задают уникальность

<input id="im_title5217047" class="text im_title" type="text" maxlength="64">
selenium.type("id=im_title5217047", "Test Hello!");

но это скорее всего не сработает, так как ваш элемент находиться в javascript

<script type="text/javascript">
...
<input id="im_title5217047" class="text im_title" type="text" maxlength="64">
...
</script>

тут надо больше увидеть как появляются элементы и в каком контексте, т.е. после каких действий.