zoukankan      html  css  js  c++  java
  • Selenium学习:单选框、复选框、下拉框元素选择

    单选框

    源码

    <input type="radio" name="subject[0]" required="" value="F1"  aria-required="true">       
    
    <input type="radio" name="subject[0]" required="" value="F2" aria-required="true">

    方法:

    driver.find_element_by_css_selector('input[value='F2']").click()

    复选框

    源码

    <input type="checkbox" name="subject[0]"   value="F1" > F1
    
    <input type="checkbox" name="subject[0]"   value="F2" checked > F2    (checked 代表选中)

    方法一:判断原来的状态是否勾选,默认勾选后不管,没有勾选的点击勾选

    input1 = driver.find_element_by_css_selector("input[value='F1']")
    selected = input1.is_selected()
    if selected :    #如果已经选中
        print('F1 already selected')
    else:
        print('F1 not selected, click on it')
        input1.click()

    方法二:取消选中所有的复选框;再选择想要选择的复选框

    #根据input属性选中,并且被checked中的元素
    checkEles = driver.find_elements_by_css_selector ("input[name='subject[0]'][checked]")
    for one in checkEles:
        one.click()       #点击反选
     
    #再选择点击目标元素
    driver.find_element_by_css_selectot('input[value='F1']").click()

    select下拉框

    源码

    <select id="choose_car">
        <option value="volvo">沃尔沃</option>
        <option value="corolla">卡罗拉</option>
        <option value="fiat">菲亚特</option>
        <option value="audi">奥迪</option>
    </select>

    1. 导入 select类

    from selenium.webdriver.support.select import Select
    或者
    from selenium.webdriver.support.ui import Select

    这两种方法没有本质的区别

    2. 实例化select类

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

    3. 反选所有选中的元素

    select.deselect_all()

    4. 选择想要的元素

        有三种方法:

    selete.select_by_visible_text('沃尔沃')        
      #visible_text是在option标签中间的值,是显示在下拉框的值
    selete.select_by_index(1)               
      #inde从0开始
    selete.select_by_value('fiat')               
      #value是option标签的一个属性值,不是显示在下拉框中的值

    5. 查看select中所有的选项   select.options

    for one in select.options:
        print one.text

    6. 查看我已选中的选项   all_selected_options

    for one in select.all_selected_options:
        print one.text
    • select_by_index()            通过索引定位,index里不需要加引号,加引号会报错
    • select_by_value()            通过value值定位
    • select_by_visible_text()   通过文本值定位
    • deselect_all()                   取消所有选项
    • deselect_by_index()         取消对应index选项
    • deselect_by_value()         取消对应value选项
    • deselect_by_visible_text() 取消对应文本选项
    • first_selected_option()      返回第一个选项
    • all_selected_options()      返回所有的选项

    工作实战里的小例子

    像这样有很多的select框,如果获取每个select的属性再依次获取是个繁重的工作量,有没有可以比较简单的方法呢

    思路是,每个select都在同一div下面,每个select都有唯一的name,那么就可以根据name获得每个select的option

    1. 先获取select列表

    2. for循环获得每个select的name

    3. 根据每个name的select循环打印出option

    4. 每个select选择index为2作为试验,每个select下的value和文本不同,只能使用index

    代码如下:

    seleList = []
    seleObject = dr.find_elements_by_css_selector(".form-group  select")
    for sele in seleObject:
        seleList.append(sele.get_attribute("name"))
        #print(sele.get_attribute("name"))            #打印每个select的name
     
    for one in seleList:
        select = Select(dr.find_element_by_name(one))   #根据每个select的name,确定select下的option
        # for item in select.options:
        #     print(item.text)
        select.select_by_index(2)    #取每各select里的第二个option进行试验
     
    dr.find_element_by_xpath("//button[@class='btn btn-primary']").click()  #搜索
  • 相关阅读:
    2017 9 26
    NOI2002 银河英雄传说(luogu p1196)
    luogu [USACO08OCT]打井Watering Hole
    luogu P2784 化学1(chem1)- 化学合成
    2017 9 24
    2017.9.24 noip模拟赛 day2—组合数
    Java 接口——2
    Java 接口——1
    Java 泛型
    Java 随笔——8
  • 原文地址:https://www.cnblogs.com/x00479/p/14244212.html
Copyright © 2011-2022 走看看