selenium出现“element not interactable”问题总结
“element not interactable”问题根因:元素不可交互,可能的原因及解决方法如下所示:
1、检查元素的定位(XPATH、CSS_SELECTOR内的内容)是否写正确
2、代码中元素进行获取的时候查看是否已经加载出来,等待元素加载可以使用显式等待
element = WebDriverWait(browser,20,0.5).until(EC.presence_of_element_located((By.XPATH,'//*[@id="app"]/div')))
3、元素在页面上不可见,需要拖动下拉框才能看到这个元素,此时需要让元素在页面上可见,才可操作
4、可能是页面元素被iframe标签包裹起来了:如163邮箱登录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
from time import sleep from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.implicitly_wait(10) driver. get ( "https://mail.163.com/" ) driver.find_element_by_link_text( "密码登录" ).click() driver.switch_to.frame(driver.find_element_by_xpath( '//iframe[@scrolling="no"]' )) #需要定位到iframe标签 driver.find_element_by_xpath( '//input[@name="email"]' ).send_keys( "lmsgau" ) driver.find_element_by_link_text( "登 录" ).click() #源代码中若是有空格,此处也必须有空格 sleep(10) driver.quit() |