Python Selenium onclick 抛出 ElementNotInteractableException
Python Selenium onclick throws 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 上找到答案,但如果有答案并且你提供给我 link,我很乐意接受它作为答案。
点击需要诱导的元素 for the element_to_be_clickable()
and you can use either of the following :
使用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
在我想使用 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 上找到答案,但如果有答案并且你提供给我 link,我很乐意接受它作为答案。
点击需要诱导的元素element_to_be_clickable()
and you can use either of the following
使用
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