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()
  • 相关阅读:
    罗美琪和春波特的故事...
    欢迎参与 KubeVela 官方文档翻译活动
    开源 1 年半 star 破 1.2 万的 Dapr 是如何在阿里落地的?
    Service Mesh 从“趋势”走向“无聊”
    Nacos 2.0 性能提升十倍,贡献者 80% 以上来自阿里之外
    阿里巴巴云原生 etcd 服务集群管控优化实践
    KubeVela 1.0 :开启可编程式应用平台的未来
    知行动手实验室可以用来做什么?
    7. Jackson用树模型处理JSON是必备技能,不信你看
    Linux:sudo,没有找到有效的 sudoers 资源
  • 原文地址:https://www.cnblogs.com/linbao/p/7535697.html
Copyright © 2011-2022 走看看