selenium定位下拉框:selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable: Element is not currently


 有時候元素定位出錯,顯性等待可以很好解決

  • presence_of_element_located: 當我們不關心元素是否可見,只關心元素是否存在在頁面中。
  • visibility_of_element_located: 當我們需要找到元素,並且該元素也可見。

場景:訪問百度,找到右上角設置,點擊下拉中的搜索設置。每頁條數初始是10,修改每頁條數為20

 1 from selenium import webdriver  2 import time  3 from selenium.webdriver.support.select import Select  4 from selenium.webdriver.common.keys import Keys  5 from selenium.webdriver.common.action_chains import ActionChains  6 from selenium.webdriver.support.wait import WebDriverWait 7 from selenium.webdriver.support import expected_conditions as ec 8 from selenium.webdriver.common.by import By  9 driver = webdriver.Chrome() 10 driver.maximize_window() 11 driver.get("http://www.baidu.com") 12 driver.implicitly_wait(10) 13 driver.find_element_by_id("kw").send_keys("selenium") 14 driver.find_element_by_id("su").send_keys(Keys.ENTER) 15 # 鼠標懸停
16 mouse = driver.find_element_by_name("tj_settingicon") 17 ActionChains(driver).move_to_element(mouse).perform() 18 driver.find_element_by_link_text("搜索設置").click() 19 # 隱式等待
20 driver.implicitly_wait(5) 21 # 定位下拉框
22 select = driver.find_element_by_name("NR") 23 # 顯式等待,待元素可見
24 # WebDriverWait(driver, 10).until(ec.visibility_of_element_located((By.NAME, "NR")))
25 Select(select).select_by_visible_text("每頁顯示20條") 26 print("下拉框選擇的最新條數是:", select.get_attribute('value')) 27 #等待2秒,為了看到效果
28 time.sleep(2) 29 driver.quit()

 沒加第24行代碼前,一直報錯selenium.common.exceptions.ElementNotInteractableException

    加行代碼完美解決:

# 顯式等待,待元素可見
WebDriverWait(driver, 10).until(ec.visibility_of_element_located((By.NAME, "NR")

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM