driver.find_element_by_id('//*[@id="save"]').click()
<input type="submit" value="View Report" id="save" name="save" data-reportid="108">
你需要考虑几件事。根据元素的HTML:
<input type="submit" value="View Report" id="save" name="save" data-reportid="108">
WebElement是React元素。因此,单击您需要的元素以诱导WebDriverWait以获得element_to_be_clickable()
,您可以使用以下任何一种定位器策略:
>
使用css_selector
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#save[name='save'][value='View Report']"))).click()
使用XPath
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='save' and @name='save'][@value='View Report']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
您可以在以下文件中找到一些相关的讨论:
我有一个使用Selenium WebDriver版本3.6和Chrome驱动程序的自动化项目。软件运行良好,直到它开始显示错误 未知错误:元素在点(25,-9)处不可单击(会话信息:Chrome=61.0.3163.100)(驱动程序信息:ChromeDriver=2.31.488763(092DE99F48A300323ECF8C2A4E2E7CAB51DE5BA8),平台=Windows NT
问题内容: 这个问题是由于总的中间在试图忠实于什么实际用户一样。所以我在想这种方法: 首先,而不是查找元素,然后单击: 编写单击以下内容的通用函数: 然后,当发生此异常时,请尝试以其他方式单击。 您认为这种方法可行吗? 问题答案: 请仔细阅读此堆栈溢出答案以更好地理解。 更新 我们也可以尝试 也请尝试如下 尝试使用Y坐标单击 尝试使用X坐标单击 希望这对您有帮助
我试图打开stackoverflow并搜索查询,然后单击搜索按钮。除了我不能点击提交按钮外,几乎一切都很顺利 我遇到错误 未知错误:元素...在点(608,31)不可点击。其他元素将接收单击:(会话信息:chrome=60.0.3112.101)(驱动程序信息:chromeDrive=2.29.461591 (62ebf098771772160f391d75e589dc567915b233),平台
问题内容: 我尝试用Selenium 抓取此网站。 我想单击“下一页”按钮,为此,我这样做: 它适用于许多页面,但不适用于所有页面,我收到此错误 始终为此页面 我尝试了这个 但是我遇到了同样的错误 问题答案: 另一个元素覆盖了您要单击的元素。您可以使用它来单击。
当我点击一个按钮时,它会显示一个带有另一个按钮的表单,我想点击其中一个。这是一个视频(非常短),请观看http://screencast.com/t/zyliSemW1s1 所以我点击“买票”按钮,简单如下: 然后我等待下一个按钮被点击。 我使用下一个代码: 之后,我点击我等待的按钮: 我得到错误:元素在这一点上是不可点击的。 据我所知,该方法预期的条件。ElementToBeClickable(
问题内容: 我有此selenium代码,应单击大小选择按钮。 它适用于其他页面,但现在在一页上出现此错误: 我不明白,因为我可以查看Selenium打开的浏览器窗口,并且通常可以单击这些按钮。 我该如何解决? 有人问这个网站。它在这里:http : //de.sinobiologic.com/GM-CSF- CSF2-Protein-g-19491.html 问题答案: 您可以使用action_c