Использование selenium driver.find_element (). Click () на разделенной веб-странице - PullRequest
1 голос
/ 24 марта 2020

Прежде всего, я совершенно новичок в поиске в сети, html и селене, поэтому мой вопрос может показаться вам не значимым.

Что я пытаюсь сделать: автоматическое нажатие на изображение на веб-странице. Ручной щелчок по этому изображению позволяет отобразить новую информацию на части веб-страницы.

Как я пытался это сделать: Я нашел что-то, определяющее c для этого изображения, например:

<img src="images/btn_qmj.gif" border="0">

Итак, я только что вошел в python:

xpath = '//img[@src="images/btn_qmj.gif"]'
driver.find_elements_by_xpath(xpath)

Проблема: это возвращает мне пустой список. Я частично понял, почему, но у меня нет никакого решения.

изображение html инспектора кода

Я включил здесь изображение html Дерево я получаю на веб-инспекторе. Как можно видеть, дерево для достижения моей интересующей линии дает "/ html / frameset / frame 1 / # document / html / body / center / table / tbody / tr [ 2] / TD / а / IMG». Проблема в том, что я не могу получить доступ через xpath к чему-либо, что идет после #document. Если я пытаюсь скопировать xpath моей интересующей линии, он отслеживает его только до 2-го "/ html". Это похоже на то, что страница разделена на две части, с внутренними частями, к которым у меня нет доступа. Я предполагаю, что есть способ получить доступ к содержимому #document, возможно, это относится к другой веб-странице, но я застрял на этом этапе. Буду очень признателен, если кто-нибудь сможет мне помочь в этом.

Ответы [ 3 ]

0 голосов
/ 24 марта 2020

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

 driver.switch_to_frame(frame)
 WebDriverWait(driver, 20).until(
 EC.visibility_of_element_located((By.XPATH, "'//img[@src="images/btn_qmj.gif"]'"))).click()
 driver.switch_to_default_content()

Примечание :: Вам необходимо добавить ниже импорта

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
0 голосов
/ 24 марта 2020

Элемент присутствует внутри iframe. Чтобы получить доступ к элементу, необходимо сначала его переключить.

Индуцировать WebDriverWait () и frame_to_be_available_and_switch_to_it ()

Вызвать WebDriverWait () и visibility_of_element_located()

WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.NAME,"gauche")))
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,"//img[@src='images/btn_qmj.gif']"))).click()

Вам необходимо импортировать следующие библиотеки.

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
0 голосов
/ 24 марта 2020

Вы пытались сначала переключиться на фрейм?

driver.switch_to.frame('gauche')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...