zoukankan      html  css  js  c++  java
  • selenium常用操作之下拉框操作

    下拉框操作:

          一般下拉框适用场景:在新增时有下拉框选项,在二级联动或多级联动有下拉(比如:在选择省市县时的多级联动下拉、日期控件等)。

    一般下拉框功能有以下两个:

          1.菜单栏-点击其中的某个链接跳转

        2.对下拉列表的元素进行操作。

          下拉框选择都有select的标签属性,存在两个属性select和option。有的呈现的是下拉框样式但没有select属性的比如说或ul/li。

      

    思路:

    1.等待下拉列表和下拉列表出现

    2.对下拉列表的元素进行操作

    下拉框操作流程:

    1.获取所有的下拉列表值,然后用循环去匹配相同的值;

    2.通过text的内容来找到下拉列表的某个值

    示例代码:

    #等待下拉框元素出现后点击
    WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,'//a[contains(text(),"课程")]')))
    driver.find_element_by_xpath('//a[contains(text(),"课程")]').click()

    3.如果是select/option组合,则可以使用Select类来处理。

    示例代码:

    from selenium.webdriver.common.action_chains import ActionChains
    #1.实例化鼠标类
    ac=ActionChains(driver)
    #2.调用各种鼠标行为后,调用perform()来执行
    ac.move_to_element_with_offset(driver.find_element_by_xpath('//div[@id="u"]/*[@name="tj_login"]')).perform()
    from selenium.webdriver.support.ui import Select
    #1.实例化select类
    select=Select(driver.find_element_by_id("su"))
    #2.根据下标来选择
    select.select_by_index(2)
    #3.根据option的value值来选择
    select.select_by_visible_text("高级搜索")
    

      

    以下是网上其他文章中介绍的。可以参考下:

         其类型有:

          ①单选下拉框,可以选择一个元素。

          ②多选下拉框,可以选择多个元素。

         定位方法:

          ①直接定位

          ②二次定位。先定位到select框,再定位到select选项。

          ③导入Select模块(推荐使用) -- 根据属性或者索引来定位。

             先要导入Select方法     from selenium.webdriver.support.ui import Select 。

             然后通过索引:s = driver.find_element_by_id('nr')

                                      Select(s).select_by_index(2)

             通过value值定位:s = driver.find_element_by_id('nr')

                                           Select(s).select_by_value('20')

             通过text值来定位:s = driver.find_element_by_id('nr')

                                            Select(s).select_by_visible_text('宝马')

    下面附上ms.html代码截图:

           

    通过selenium实现:

    import time 

    from selenium import webdriver

    from selenium.webdriver.support.ui import Select    # 导入Select模块

    # 指定驱动

    driver = webdriver.Chrome(r"C:webdriverchromedriver.exe")

    # 打开网址

    driver.get('file:///C:/UsersAdministrator/PycharmProjects/1120/web_driver/lesson3/ms.html')

    # 获得相应的webElement

    select = Select(driver.find_element_by_id('multi'))

    # 先取消所有选择的选项

    select.deselect_all()

    # 根据text值定位

    select.select_by_visible_text('雅阁')

    select.select_by_visible_text('宝马 740')

    # 获得相应的webElement

    select = Select(driver.find_element_by_id('single'))

    # 根据value值定位

    select.select_by_value('male')

    driver.quit()

  • 相关阅读:
    打成jar包运行,依然可以找到指定路径的xml
    Springboot整合Ehcache 解决Mybatis二级缓存数据脏读 -详细
    Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: org/dom4j/io/SAXReader
    Springboot + Mybatis + Ehcache
    Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class
    缓存的设计与使用
    一二级缓存
    HttpServletResponse 返回的json数据不是json字符串,而是json对象
    消息中间件选型
    为什么要使用MQ消息中间件?
  • 原文地址:https://www.cnblogs.com/123blog/p/12482797.html
Copyright © 2011-2022 走看看