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

unable to locate element Selenium webdriver


(Дима ТОК) #1

Привет. Заранее спасибо за ответ.


Проблема в том что не находит кнопку “Написати листа “, ошибка unable to locate element.
Питался через xpath. css. и тд ,на скрине путь прописал руками , тоже не работает
.
driver.findElement(By.xpath(”//aside[@class=‘sidebar’]/button[@class=‘default compose’]”)).click();

Подскажете пожалуйста в чем проблема , или видосик по теме , может я что то упустил( не давно начал изучать).Спасибо.


(Alexander) #2

Возможно в тот момент, когда вы пытаетесь кликать по кнопке, она еще не подгрузилась. Попробуйте ожидание.


(Taras) #3

проблема в теге aside
попробуйте так //*[local-name()=‘aside’ and contains(@class,‘sidebar’)]/button[contains(@class,‘default’) and contains(@class,‘compose’)]


(Дима ТОК) #4

JavaScript error: , line 0: uncaught exception: undefined
и снова ошибка unable to locate element.


(Taras) #5

“JavaScript error: , line 0: uncaught exception: undefined” - то ти где такое получаешь ?


(Дима ТОК) #7


(Bolatbek) #8

Попробуй css:

#content > aside > .default.compose

Или такой xpath:

//div[@id='content']//button[@class='default compose']

(Maxim Zaitsev) #9

Набросал на коленке код. Работает xD

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

login = 'your_login'
password = 'your_password'
chrome_path = r'C:\\_Tools\\chromedriver.exe'

driver = webdriver.Chrome(chrome_path)

driver.get('https://mail.ukr.net/')
driver.find_element_by_id('login').send_keys(login)
driver.find_element_by_id('password').send_keys(password)
driver.find_element_by_css_selector('.login__foot>button').click()

wait = WebDriverWait(driver, 30)
button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.default.compose')))
button.click()

(Taras) #10

там мерионнет в логах пишет о accessebility role - попробуй без @class - //*[local-name()=‘aside’]/button[text()]


(Дима ТОК) #12

css- JavaScript error: , line 0: uncaught exception: undefined
xpath-Unable to locate element


(Дима ТОК) #13

Unable to locate element


(Bolatbek) #14

Написал в ЛС. Проверь плиз.


(Bolatbek) #15

Вообще по логу - ругается не на эту строку, а на другое совсем.


(Bolatbek) #16

Проблема решилась.
Нужно было просто переключиться в нужное окно браузера.


(Дима ТОК) #17

я не свичнул окно, спасибо за ответ)


(Дима ТОК) #18

я не сменил окно, спасибо за ответ)


(Michael Beider) #19

Try css selector By.cssSelector(“div#content button.default.compose”)