Message: no such element: Unable to locate element

Проблема (Вопрос) заключается в том, что у меня 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

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

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

ну а вообще, лучше так не хардкодить пути до элементов, пользуйтесь осями Оси языка Xpath — Umicms

откройте Chrome Developer Tools, будучи на странице вашего приложения, и проверьте xpath нужного элемента
первая ссылка из гугла How to search by Xpath/Css in Chrome Developer Tools? | testerlive

У меня ситуация куда забавнее: селен всё находит, кликает по кнопке, но выдаёт ошибку. Т. е. всё как бы работает, но мне надо чтоб красиво было.

1 лайк

вы лог ошибки можете привести?
кнопка может быть закрыта другим элементом, она может быть некликабельна и так далее