如何解决Python Selenium onclick引发ElementNotInteractableException
在我要使用Selenium进行交互的网站上,html代码包含以下部分:
<a href="#" onclick="editToggle('default_name_span','edit_name')">
<img src="img/rename.png?1" alt="change name" title="change name">
</a>
这显示了一个小图像,可以单击该图像来更改该网页上的项目名称。我尝试过
webdriver.find_element_by_css_selector("a[onclick*=edit_name]").click()
其中webdriver
是我的selenium.webdriver
实例。不幸的是,这引发了ElementNotInteractableException
。我尝试了5秒的虚拟等待,还尝试了EC.element_to_be_clickable
和EC.presence_of_element_located
和WebDriverWait
。
我尝试单击img
。这项工作没有错误,但在网页上没有产生任何可见的结果。
也尝试使用XPATH:
WebDriverWait(webdriver,15).until(EC.presence_of_element_located((By.XPATH,'//*[@id="default_name_span"]/a')))
WebDriverWait(webdriver,15).until(EC.element_to_be_clickable((By.XPATH,'//*[@id="default_name_span"]/a')))
webdriver.find_element_by_xpath('//*[@id="default_name_span"]/a').click();
这将引发相同的异常。
如何单击此处?有什么想法吗?
我没有找到关于SO的答案,但是如果有答案,而您为我提供了链接,那么我很乐意将其作为答案。
解决方法
要单击元素,您需要为element_to_be_clickable()
引入WebDriverWait,并且可以使用以下Locator Strategies之一:
-
使用
CSS_SELECTOR
:WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"a[onclick^='editToggle']>img[alt='change name'][title='change name']"))).click()
-
使用
XPATH
:WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//a[starts-with(@onclick,'editToggle')]/img[@alt='change name' and @title='change name']"))).click()
-
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。