Как нажать на элемент img? - PullRequest
1 голос
/ 26 февраля 2020

Я пытаюсь получить доступ к следующему классу в селене, но он показывает элемент не найден ошибка.

Html

<button class="gpquestion-plusicon">
  <img src="./assets/images/viewdetails.png">
</button>

Код

driver.find_elements_by_css_selector("//img[@src='./assets/images/viewdetails.png']").click()

ИЛИ

driver.find_element_by_css_selector("//img[@src='./assets/images/viewdetails.png']").click()
driver.find_elements_by_xpath("//img[@src='./assets/images/viewdetails.png']").click()

Исключение

raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: 
An invalid or illegal selector was specified

К сожалению, нет из них работает. В xpath не отображается ни одного элемента.

Есть предложения?

1 Ответ

0 голосов
/ 26 февраля 2020

Вы пытаетесь использовать xpath как css_selector. Попробуйте

driver.find_element_by_css_selector("[src='./assets/images/viewdetails.png']").click()

Или

driver.find_element_by_xpath("//img[@src='./assets/images/viewdetails.png']").click()

Вы также можете использовать явное ожидание

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

wait = WebDriverWait(driver, 10)
wait.until(ec.element_to_be_clickable((By.CSS_SELECTOR, "[src='./assets/images/viewdetails.png']"))).click()
# or
wait.until(ec.element_to_be_clickable((By.XPATH, "//img[@src='./assets/images/viewdetails.png']"))).click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...