Работа с событиями в Selenium

Эм, я чуть опоздал с ответом. :D

 

А можно решение для тех, кто в танке?

Если есть элемент 

 

@FindBy(xpath = ".//*[@id='general']/li[7]/div[1]/a/span")
public WebElement linkAddVehicles;
 
то как по нему кликнуть с помощью js?

((JavascriptExecutor)driver).executeScript("arguments[0].click()", linkAddVehicles);

спасибо! Супер, то что надо :)

hi, подскажите плз, все о том же action chains, упомянутом выше by furiousduck

нужно сделать ховер по элементу, после перехода на другую страницу

  • пишу хпас верно (на другой странице он не изменяется, элем. кликабельный по этому хпасу, а ховер не могу)
  • элемент для ховера указываю после клика и паузы

трохи коду:
female_menu.click()
wait.until(lambda self: self.find_element_by_xpath("//div[@class=‘row’]/div[@class=‘column_item column_3’]/a").is_displayed())
third_campaign = driver.find_element_by_xpath("//div[@class=‘row’]/div[@class=‘column_item column_3’]/a")

action.move_to_element(third_campaign)
action.perform()

такой меседж:
selenium.common.exceptions.StaleElementReferenceException: Message: Element not found in the cache - perhaps the page has changed since it was looked up

че он морозится?

и есть ли какой нибудь другой способ сделать красивый ховер на python кроме action chains

после перехода на другую страницу сделайте опять third_campaign = driver.find_element_by_xpath("//div[@class=‘row’]/div[@class=‘column_item column_3’]/a") и дальше уже с этим работайте на этой странице

так я сделал third_campaign

сразу после

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

еще раз, я выбираю элемент после перехода на страницу, xpath правильный, что хочет webdriver?

Возможно, тут third_campaign подтягивается первый, попробуйте каждый раз на новой странице определять разные переменные (например third_campaign_pagename) и на текущей юзать его action.move_to_element(third_campaign_pagename)

Спасибо, проблема жешена, уходила далеко корнями в использование переменных из других модулей

Привет , нужна Ваша помощь ребзи
https://www.refheap.com/107485
учусь писать автотесты через библиотеку селенидов/джюнит
не могу разобраться с css селекторами
проблема в том , что кнопка которую мне нужно нажать $(“#todo-list li:nth-of-type(2) .destroy”).click(); появляется только когда на нее наводишь , в intellij IDEA тест не проходит на этом этапе, подскажите как сделать ее видимой )
Пробовал уже $(“#todo-list li:nth-of-type(2) .destroy”).shouldBe(visible).click();
без этой строки тест проходит на ура Screenshot by Lightshot
а вот ошибка Screenshot by Lightshot

Если вы используете Selenide, вам следует добавить событие hover():

$("#todo-list li:nth-of-type(2) .destroy").hover().click()
1 лайк

спасибо

Для “спасибо” есть спец. кнопка на панели. :wink:

2 лайка

походу оно так работать не будет ,
$("#todo-list li:nth-of-type(2)").hover().$(".destroy").click(); – не уверен что так , ну вроде должно заработать

При таком запросе, вы:

  1. с начало найдете элемент $("#todo-list li:nth-of-type(2)")
  2. затем наведется указатель мыши и сработает событие hover
  3. найдется элемент $(".destroy") и сработает клик

Если это соответсвует вашей html верстке - то окей. Лучше конечно разбить их на две строчки:
$("#todo-list li:nth-of-type(2)").hover();
$(".destroy").shoudBe(visible).click() - тут мы немного подождем пока отрисовывается окошко при событии hover

Screenshot by Lightshot работает , урая ) спс