python - 如何点击img元素?

标签 python selenium selenium-webdriver xpath

我正在尝试访问 selenium 中的以下类,但它显示元素未找到错误。

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 显示没有找到元素错误。

有什么建议吗?

最佳答案

您正在尝试使用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()

关于python - 如何点击img元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60413219/

相关文章:

python - 获取列表中所有字符串的第一个单词

python - 使用 poetry 和 pip 安装私有(private)仓库的依赖

java - Selenium Webdriver - 取消选中复杂表格中的所有复选框

c# - 如何让 selenium 等待基于 XMLHttpRequest 的请求的 ajax 响应

javascript - 是否可以在同一场景中有条件地运行 cucumber 步骤?

python - 使用 OpenCV 在 Python 中反转图像

python - 如何创建一个按钮来结束程序而不结束GUI?

java - Maven 似乎没有下载整个 jar

RSelenium 通过 docker

ruby - 如何将 Selenium java 方法转换为 ruby