Селен: невозможно найти элемент - PullRequest
1 голос
/ 10 июля 2019

Итак, я пытаюсь идентифицировать эту кнопку, чтобы нажать ее, но получаю исключение:

selenium.common.exceptions.NoSuchElementException: Сообщение: нет такого элемента: Невозможно найти элемент

На изображении ниже показана кнопка: enter image description here

Странно то, что я уже определил кнопку входа на странице входа, но послеЯ попал на следующую страницу, это как идентифицировать элемент больше невозможно, может быть, потому что страница не допускает этого?

#This one works
driver.find_element_by_class_name("urBtnStdNew").click()
#This one give the exception
driver.find_element_by_id("sapbi_snippet_TABSTRIP_CONTAINER_ITEM_1").click()
#This is the HTML of that element
<span class="urTbsTxtOff">DPD Trend</span></td>

Редактировать: Спасибо, ребята, я не знал о существовании iframe, поэтому его переключение решило мою проблему.

iframe = driver.find_element_by_xpath("//iframe[@name='iframe_Roundtrip_9223342']")
driver.switch_to.frame(iframe)

Ответы [ 3 ]

0 голосов
/ 10 июля 2019

Хамза, WebDriverWait не будет работать. Как вы уже сказали, вы пытались использовать Thread.sleep (), а WebDriver по-прежнему не может найти элемент.

Мне кажется, что проблема связана с использованием неверного локатора элементов.

Если кнопка на вашем скриншоте - это кнопка в красном поле, и код в красном поле в инспекторе элементов относится к ней, то мне кажется, что идентификатор должен быть TABSTRIP_CONTAINER_ITEM_1_tabStrip_tabstrip-itm-5. Таким образом, на основе приведенного выше примера следующий код должен найти кнопку DPD Trend и нажать ее:

driver.find_element_by_id("TABSTRIP_CONTAINER_ITEM_1_tabStrip_tabstrip-itm-5").click()
0 голосов
/ 11 июля 2019

Правильный локатор XPath будет таким простым:

//span[text()='DPD Trend']

Если вы все еще не сможете найти элемент:

0 голосов
/ 10 июля 2019

Используйте WebDriverWait и следующие xpath, чтобы перейти на вкладку DPD Trend.

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

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//td[@class='urTbsLabelOff urBorderBox']/span[@class='urTbsTxtOff'][contains(.,'DPD Trend')]"))).click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...