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

话不多说,直接上方法:

原来部分的代码为:

username=self.wait.until(EC.presence_of_element_located((By.ID,'loginName')))
password=self.wait.until(EC.presence_of_element_located((By.ID,'loginPassword')))
submit=self.wait.until(EC.presence_of_element_located((By.ID,'loginAction')))
username.send_keys(self.username)
password.send_keys(self.password)
submit.click()

运行后报错:selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable.

Solution:1.临时覆盖别的element来保证自己的element

方法是我们更换等待的条件,一种是self.wait.until(expected_conditions.invisiblity_of_element_located((By.ID,'id_of_the_element_to_be_invisiblity')))

另一种是self.wait.until(expected_conditions.element_to_be_clickable((By.ID,'id_of_the_element_to_be_clickable'))),这里我采用了第二种的处理方法。

 submit=self.wait.until(EC.element_to_be_clickable((By.ID,'loginAction')))

2.永久覆盖element来保证自己的element。

方法是如下的代码:

WebElement ele = driver.findElement(By.xpath("element_xpath"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", ele);

第二种方法暂时还没有理解好,有理解的可以交流交流。

你可能感兴趣的:(爬虫呢)