zoukankan      html  css  js  c++  java
  • select下拉框

    一.select下拉框

    场景:

    百度首页->设置->搜索设置  

    定位方法:

    1.直接使用xpath进行定位

    driver.find_element_by_xpath(".//*[@id='nr']/option[2]").click()

    代码:

    #coding:utf-8
    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    import time
    driver=webdriver.Chrome()
    driver.get("https://www.baidu.com")
    time.sleep(2)
    #鼠标悬停,定位百度"设置"
    mouse=driver.find_element("link text","设置")
    ActionChains(driver).move_to_element(mouse).perform()

    time.sleep(2)
    driver.find_element("link text","搜索设置").click()
    time.sleep(2)

    #使用xpath直接定位select下拉框
    driver.find_element_by_xpath(".//*[@id='nr']/option[3]").click()

    time.sleep(2)
    driver.quit()

    2.先定位下拉框,再定位选项

    s=driver.find_element_by_id("nr")

    s.find_element_by_xpath("//option[@value='50']").click()

    代码:

    #coding:utf-8
    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    import time
    driver=webdriver.Chrome()
    driver.get("https://www.baidu.com")
    time.sleep(2)
    #鼠标悬停,定位百度"设置"
    mouse=driver.find_element("link text","设置")
    ActionChains(driver).move_to_element(mouse).perform()

    time.sleep(2)
    driver.find_element("link text","搜索设置").click()
    time.sleep(2)
    #先定位下拉框再定位选项
    parent=driver.find_element_by_id("nr")
    parent.find_element_by_xpath("//option[@value='50']").click()

    time.sleep(2)
    driver.quit()

    2.1直接在使用一行代码代替方法2的两行

    driver.find_element_by_id("nr").find_element_by_xpath("//option[@value=''50]").click()

     代码:

    #coding:utf-8
    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    import time
    driver=webdriver.Chrome()
    driver.get("https://www.baidu.com")
    time.sleep(2)
    #直接在使用一行代码代替方法2的两行
    mouse=driver.find_element("link text","设置")
    ActionChains(driver).move_to_element(mouse).perform()

    time.sleep(2)
    driver.find_element("link text","搜索设置").click()
    time.sleep(2)

    driver.find_element_by_id("nr").find_element_by_xpath("//option[@value='50']").click()

    time.sleep(2)
    driver.quit()

    3.导入select类定位(from selenium.webdriver.support.select import Select)  

        *使用以下操作不需要点击下拉框,而是直接选中,这样更高效,推荐

    (1)select_by_value

    代码:

    #coding:utf-8
    from selenium import webdriver
    from selenium.webdriver.support.select import Select
    from selenium.webdriver.common.action_chains import ActionChains
    import time
    driver=webdriver.Chrome()
    driver.get("https://www.baidu.com")
    time.sleep(2)
    #直接在使用一行代码代替方法2的两行
    mouse=driver.find_element("link text","设置")
    ActionChains(driver).move_to_element(mouse).perform()

    time.sleep(2)
    driver.find_element("link text","搜索设置").click()
    time.sleep(2)

    #定位id为"nr"的select中value值为30的选项
    s=driver.find_element_by_id("nr")
    Select(s).select_by_value("20")

    time.sleep(2)
    driver.quit()

    (2)select_by_index(0)

    代码:

    #coding:utf-8
    from selenium import webdriver
    from selenium.webdriver.support.select import Select
    from selenium.webdriver.common.action_chains import ActionChains
    import time
    driver=webdriver.Chrome()
    driver.get("https://www.baidu.com")
    time.sleep(2)
    #直接在使用一行代码代替方法2的两行
    mouse=driver.find_element("link text","设置")
    ActionChains(driver).move_to_element(mouse).perform()

    time.sleep(2)
    driver.find_element("link text","搜索设置").click()
    time.sleep(2)

    #定位id为"nr"的select中的下标来选择
    s=driver.find_element_by_id("nr")
    Select(s).select_by_index(2)

    time.sleep(2)
    driver.quit()

    (3)select_by_visibel_text("每页显示20条")

    代码:

    #coding:utf-8
    from selenium import webdriver
    from selenium.webdriver.support.select import Select
    from selenium.webdriver.common.action_chains import ActionChains
    import time
    driver=webdriver.Chrome()
    driver.get("https://www.baidu.com")
    time.sleep(2)
    #直接在使用一行代码代替方法2的两行
    mouse=driver.find_element("link text","设置")
    ActionChains(driver).move_to_element(mouse).perform()

    time.sleep(2)
    driver.find_element("link text","搜索设置").click()
    time.sleep(2)

    #根据下拉框的text文本直接定位
    s=driver.find_element_by_id("nr")
    Select(s).select_by_visible_text("每页显示20条")

    time.sleep(2)
    driver.quit()

    ps:

    获取所有选项的元素对象(all_selected_options)

    代码:

    #coding:utf-8
    from selenium import webdriver
    from selenium.webdriver.support.select import Select
    from selenium.webdriver.common.action_chains import ActionChains
    import time
    driver=webdriver.Chrome()
    driver.get("https://www.baidu.com")
    time.sleep(2)
    #直接在使用一行代码代替方法2的两行
    mouse=driver.find_element("link text","设置")
    ActionChains(driver).move_to_element(mouse).perform()

    time.sleep(2)
    driver.find_element("link text","搜索设置").click()
    time.sleep(2)

    #返回所有选项的元素对象
    s=driver.find_element_by_id("nr")
    all=Select(s).all_selected_options #有括号的叫方法,这种没有括号的叫属性
    print all
    print len(all)#获取选项的个数

    time.sleep(2)
    driver.quit()
  • 相关阅读:
    李开复:如何设计你的2015年度计划(转)
    深入浅出 Java 多线程(转)
    maven常见问题汇总 专题
    Introduction to the Build Lifecycle
    具体解释EBS接口开发之WIP模块接口
    Shell脚本编程具体解释
    [数字图像处理]图像去噪初步(1)--均值滤波器
    hdu-4302-Holedox Eating-线段树-单点更新,有策略的单点查询
    响应式设计:理解设备像素,CSS像素和屏幕分辨率
    #define
  • 原文地址:https://www.cnblogs.com/linbao/p/7535697.html
Copyright © 2011-2022 走看看