Selenium Errors

ElementClickInterceptedException

通常是由于点击出现了失误,收集了以下几种情况: 1. 直接 .click() 失效 2. 下拉框的出现导致整体的html页面元素位置错乱

解决方法: 1. 对于单按钮而言,如“提交”,可以采用发送 ENTER 键的方式代替点击

   Before:
   driver.find_element(By.CSS_SELECTOR,"#submit").click() (X)

   After:
   driver.find_element(By.CSS_SELECTOR,"#submit").send_keys(Keys.ENTER)
  1. 对于下拉框的选择可以通过执行js模拟鼠标的点击

    element = driver.find_element_by_css('xxx')   
    driver.execute_script("arguments[0].click();", element)  
    
    
    
    element = driver.find_element_by_css('xxx')
    webdriver.ActionChains(driver).move_to_element(element).click(element).perform()

ElementNotInteractableException

有时候直接的 b.find_element_by_xxx('').click() 可能无效报错 NotInteractable,我遇到这种情况通常是需要连续按几个键的时候,上一个键还未失焦而导致无法与新的键交互,这里采用永久覆盖element来保证自己的element。

代码:

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

Reference

Last updated