Message: no such element: Unable to locate element

selenium
python
webdriver
Теги: #<Tag:0x00007f7b6d5fc5b8> #<Tag:0x00007f7b6d5fc478> #<Tag:0x00007f7b6d5fc338>

(халин «The Twiss» максим) #1

Проблема (Вопрос) заключается в том, что у меня python Не может найти элемент по xpath, хотя он задан правильно.

Я попытался сделать Программу, которая

1)Программа должна найти поезд №023Г

2)Программа должна зайти в “купе”

3)Программа должна зайти в Вагон №10

4)Программа должна выбрать Места №98,100

У меня получилось осуществить первые 3 пункта

У меня не получилось запрогать так, чтобы программа нажимала на 98 место и 100 соответственно (Пишет что не найден элемент)

Код

import sys, os

from selenium import webdriver

from selenium.common.exceptions import NoSuchElementException

import time


system = os.path.dirname(os.path.abspath(__file__))

# f = open(system + "\\pathmazilla.txt")
# pathmazila = f.read()
#
# print(pathmazila)
#
# path_to_geckodriver = str(system + "\\geckodriver.exe")
#
# print(path_to_geckodriver)

path_to_chromedriver = str(system + "\\chromedriver.exe")

# binary = FirefoxBinary(pathmazila)
# profile = FirefoxProfile() # если запускаетесь с дефолтным, то можно пропустить
# browser = webdriver.Firefox(firefox_profile=profile, firefox_binary=binary, executable_path=path_to_geckodriver)

browser = webdriver.Chrome(executable_path = path_to_chromedriver)

browser.get("https://pass.rzd.ru/tickets/public/ru?STRUCTURE_ID=704&refererPageId=4065&layer_name=e3-route&tfl=3&st0=КАЗАНЬ+(ВСЕ+ВОКЗАЛЫ)&code0=2060615&dt0=12.01.2019&st1=МОСКВА+КАЗАНСКАЯ+(КАЗАНСКИЙ+ВОКЗАЛ)&code1=2000003&checkSeats=0")

time.sleep(5)

findbuttoncupe = browser.find_element_by_xpath("/html/body/div[1]/div[2]/div[3]/div/div[2]/div[1]/div[3]/div[7]/div/div/div[1]/div[2]/div[1]/div[2]/div").click()

time.sleep(5)

findbuttonwagon = browser.find_element_by_xpath("/html/body/div[1]/div[2]/div[3]/div/div[2]/div[1]/div[3]/div[7]/div/div/div[4]/div/div[3]/div/div[11]/div/div[1]/a").click()

time.sleep(3)

try:
    find98 = browser.find_element_by_xpath("/html/body/div[1]/div[2]/div[3]/div/div[2]/div[1]/div[3]/div[7]/div/div/div[4]/div/div[3]/div/div[11]/div/div[5]/div[1]/div/div/div[2]/svg/g[3]/g[10]")
    find98.click()
except NoSuchElementException:
    print("Element not found")

Логи и ошибка вот такая

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div[1]/div[2]/div[3]/div/div[2]/div[1]/div[3]/div[7]/div/div/div[4]/div/div[3]/div/div[11]/div/div[5]/div[1]/div/div/div[2]/svg/g[3]/g[10]"}
  (Session info: chrome=71.0.3578.98)
  (Driver info: chromedriver=2.45.615291 (ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387),platform=Windows NT 10.0.14393 x86_64)

Версии ОС и софта следующие Windows 10. ChromeDriver последний и Google Chrome соответственно.

Помогите найти другое решение проблемы, ну или дайте другой xpath


(Vladislav Abramov) #2

вы, месье, простой такой, конечно!

за вас никто валидный xpath не получит. сначала проверьте, что по вашему сценарию вы приходите туда, куда надо
затем проверьте, что ваш селектор действительно выбирает то, что нужно

ну а вообще, лучше так не хардкодить пути до элементов, пользуйтесь осями http://wiki.umisoft.ru/Оси_языка_Xpath


(Евгений) #3

откройте Chrome Developer Tools, будучи на странице вашего приложения, и проверьте xpath нужного элемента
первая ссылка из гугла https://testerlive.wordpress.com/2016/07/02/how-to-search-by-xpathcss-in-chrome-developer-tools/