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

Selenium2library переход по xpath/css локатору работает через раз


(kom) #1

Пробовал разные варианты xpath:
xpath=//div/table/tbody/tr[1]

xpath=/html/body/table/tbody/tr[2]/td/table/tbody/tr[2]/td/div/table/tbody/tr/td/a/strong/font

css=html body table tbody tr td table tbody tr td div table tbody tr td a strong font

И время от времени в любом случае не срабатывает переход по локатору
пробовал и click link/ element / double click element

Нужно чтоб срабатывал переход на другую страницу после клика на этом элементе

Браузер = IE8.

Если эти же действия выполнять вручную то все нормально.


(Dmitriy Zverev) #2

А не возникает ли у вас вот такой ошибки: "u’Element is no longer valid’ "?

Это значит, что страница (или её грид) несколько раз успевает перезагрузиться, подтянуть данные и глазом это не видно.

Буквально сейчас на работе делал внутренний доклад по этому поводу.

Меня в этом случае спасли кейворды:

  • selenium2library.wait_until_page_contains_element
  • BuiltIn.Wait Until Keyword Succeeds

(kom) #3

Да, в случае со списками помогает sleep или wait_until_page_contains
Видимо там нужно было подождать пока подгрузятся данные.
Но с переходом на другую страницу ситуация не изменилась, хотя дописал wait_until_page_contains element.

click link проходит - в логе нет ошибки, но фактически страница как бы “зависает” и ничего не изменяется


(Dmitriy Zverev) #4

Если напишете код теста и ошибку, то я попробую чем-нибудь помочь.
Хотя, как правило, без взгляда на саму страницу бывает трудно.


(Mykhailo Poliarush) #5

да, тут надо видеть ошибку с которой падает тест, так тяжело что-то сказать

но в общем, обычная проблема с синхронизацией выполнения шагов теста и появления элементов в DOM


(kom) #6

sleep 2 seconds

Wait Until Page Contains element xpath=//div/table/tbody/tr[1]

Page Should Contain element xpath=//div/table/tbody/tr[1]

focus xpath=//div/table/tbody/tr[1]

click element xpath=//div/table/tbody/tr[1]

пробовал и double click element/ click link пробовал разные xpath, css


(Mykhailo Poliarush) #7

Этот локатор - нестабильный, в первой строке может появляться не то, что тебе нужно.

А вообще, без:

  • сценария
  • кода теста
  • кода страницы
  • и ошибки

Разбираться очень тяжело, так что пиши более информативно и если уже уж ничего не получиться, можем созвониться по скайпу, быстро помогу.


(kom) #8

Проблема в том что это проявляется на разных страницах а не на одной, где нужно кликнуть по ссылке xpath=//a[@href="/webpage/show.do?requestId=1040"]

При чем когда выполнение фейлится и пытаюсь вручную кликуть по той же ссылке, действительно не переходит, нужно кликнуть раз 7 чтоб переход сработал.


(Mykhailo Poliarush) #9

а на ссылке не стоят какие-то javascript обработчики с какими-то хитростями? возможно такое поведение из-за javascript


(kom) #10

Та вроде никаких хитростей, просто переходит на другую страницу с данными, которые подтягиваются из бд.
Почистил cookies, вроде бы уже нормально переходит, видимо чтото у меня было не так.


(kom) #11

Проблема оказалась в том что сбивается фокусировка на нужном элементе, т.е. если ничего не трогать, не шевелить мышкой, все тесты проходят нормально, но если пытаться перейти на другое окно, то обязательно где-нибудь зафейлится.

Отсюда возникает вопрос: можно ли как-то запускать все действия с веб-страницами в фоне, в виртуальном браузере или еще как-нибудь?


run selenium2library tests in background