• 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")

     

  • 相关阅读:
    Java根据html模板创建 html文件
    java.lang.NumberFormatException: For input string:"filesId"
    使用java开源工具httpClient及jsoup抓取解析网页数据
    JBPM5流程设计器jbpm-designer-2.4.0.Final-tomcat.war的部署没法访问的问题
    MyEclipse8.0 注册码生成代码
    图片转为byte[]、String、图片之间的转换
    java中Xml、json之间的相互转换
    java二维码小试牛刀
    进度条脚本
    如何制作一寸、二寸、六寸照片。以后不用再去照相馆了!!! 转~版本更新
  • 原文地址:https://www.cnblogs.com/Lara1798/p/12956371.html
Copyright © 2020-2023  润新知