selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable的解决方式

问题描述:

元素定位成功,但是click()失败。报错:selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable

原因分析:

1、未放鼠标在元素上,元素的标签:在这里插入图片描述

2、放了鼠标在元素上:元素的标签:
在这里插入图片描述

3、从元素上移开鼠标,元素的标签:
在这里插入图片描述

4、相比较之前,元素的标签属性多了“class=’’”,因此改变的元素的内容,无法click()。

解决方案:

1、解决方式,调用ActionChains(),模拟人类操作过程,先定位的元素为,在这里插入图片描述
然后把鼠标移到元素上,这时元素标签的属性改变了多了class=“focus”,因此需要重新定位元素,然后click()。

解决代码:

1、my_error_element=driver.find_element(By.XPATH,"//*[@id=‘importRenewMiCoinForm’]/div[2]/div/div/div/div/div/ul/li[3]")

2、print(my_error_element.get_attribute(‘outerHTML’))

3、my_action.move_to_element(my_error_element).perform()

4、driver.find_element(By.XPATH,"//*[@id=‘importRenewMiCoinForm’]/div[2]/div/div/div/div/div/ul/li[3]").click()

**解释:

步骤1,定位元素。步骤2,看一下是否定位成功,并输出元素的所有标签内容。步骤3,将鼠标放在该元素上。步骤4,重新定位元素,并点击元素。**

关于步骤3的前期import部分和调用部分

1)from selenium.webdriver.common.action_chains import ActionChains

2)driver=webdriver.Chrome()

3)my_action=ActionChains(driver)

4)url0=“http://us.tracksolidpro.com/mainFrame”

5)driver.get(url0)

我的猜想,没研究click()源码部分,猜想不对的话,请大佬指点。

我的猜想是,click()点击一个元素时,先将鼠标放在该元素上,然后传入需要的定位的元素的参数。因此,click失败了。因为鼠标放在元素上后,元素的属性改变了,而传入的参数却是老旧的,所以无法点击。

你可能感兴趣的:(定位,selenium,python)