【问题标题】:How to click on the image selenium python如何点击图片 selenium python
【发布时间】:2019-06-20 09:50:15
【问题描述】:
尝试使用selenium python点击输入类型,输入类型调用图像文件,并在图像上添加css cursor:pointer,不幸的是无法点击图像或输入
图片
代码
<input type="image" src="/images/btn_next.png">
CSS
input[type="image" i]
{
cursor: pointer;
}
如何点击图片“下一步”?
我试过了,但显示错误
driver.find_element_by_xpath('//input[@type="image"][@src="/images/btn_next.png"]').click()
【问题讨论】:
标签:
python
selenium
selenium-webdriver
xpath
css-selectors
【解决方案1】:
尝试使用WebdriverWait 和element_to_be_clickable 点击图片。
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,'//input[@type="image"][@src="/images/btn_next.png"]'))).click()
如果以上代码无法点击元素,请尝试使用 javaScript 执行器点击元素。
driver.execute_script("arguments[0].click();",driver.find_element_by_xpath('//input[@type="image"][@src="/images/btn_next.png"]'))
【解决方案2】:
你很亲密。要在元素上click(),您需要使用 and 将 xpath 中的 attributes 组合起来,您可以使用以下任一 @987654321 @:
但是当您打算在元素上调用 click() 时,理想情况下您需要为 element_to_be_clickable() 诱导 WebDriverWait,如下所示:
-
使用css_selector:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[src='/images/btn_next.png'][type='image']"))).click()
-
使用xpath:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@src='/images/btn_next.png' and @type='image']"))).click()
-
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
【解决方案3】:
如果您运行 chrome,则可能将物理光标移动到图像并单击会有所帮助。有一个 python 包可以将物理光标移动到 web 元素上,selenium-move-cursor。