处理下拉列表需要用到 Selenium 里的 Select 工具类,Select 的方法和属性如下表所示:

    属性/方法 属性/方法描述
    options 所有选项
    all_selected_options 所有选中的选项
    first_selected_option 首个选中的选项
    select_by_value() 根据value值选择
    select_by_index() 根据索引选择
    select_by_visible_text 根据文本选择
    deselect_all() 反选所有选项
    deselect_by_value() 根据value值反选
    deselect_by_index 根据索引反选
    deselect_by_visible_text 根据文本反选

    使用方法:

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>测试下拉表单</title>
    6. </head>
    7. <body>
    8. <!DOCTYPE html>
    9. <html lang="en">
    10. <head>
    11. <meta charset="UTF-8">
    12. <title>测试 checkbox 和 radio button</title>
    13. </head>
    14. <body>
    15. <form action="javascript:alert('test')">
    16. <select name="fruit" id="fruit" multiple style="height:100px">
    17. <option value="apple" selected>apple</option>
    18. <option value="banana" selected>banana</option>
    19. <option value="peach">peach</option>
    20. <option value="mango">mango</option>
    21. <option value="pear">pear</option>
    22. </select>
    23. <input type="submit" value="submit">
    24. </form>
    25. </body>
    26. </html>
    27. </body>
    28. </html>
    1. from selenium import webdriver
    2. from time import sleep
    3. from os import path
    4. from os.path import join
    5. from selenium.webdriver.support.select import Select
    6. class TestCase(object):
    7. def __init__(self):
    8. demo03_path = path.dirname(path.abspath(__file__))
    9. form_path = join(demo03_path, 'form2.html')
    10. self.driver = webdriver.Chrome()
    11. self.driver.maximize_window()
    12. self.driver.get(form_path)
    13. def test_select(self):
    14. """
    15. 测试 下拉列表 的方法
    16. :return:
    17. """
    18. sleep(1)
    19. fruit = self.driver.find_element_by_id('fruit')
    20. fruits = Select(fruit)
    21. # 1、获取所有选项,打印选项数量
    22. option = fruits.options
    23. print(len(option))
    24. # 2、获取所有被选中的选项,打印被选中选项的文本内容
    25. selected = fruits.all_selected_options
    26. for f in selected:
    27. print(f.text)
    28. # 3、打印第一个选中的选项的文本内容
    29. first_select = fruits.first_selected_option
    30. print(first_select.text)
    31. # 4、选中value值为 peach 的选项
    32. fruits.select_by_value('peach')
    33. sleep(1)
    34. # 5、选中第4个选项,即选中 mango
    35. fruits.select_by_index(3)
    36. sleep(1)
    37. # 6、选中文本内容为 pear 的选项
    38. fruits.select_by_visible_text('pear')
    39. sleep(1)
    40. # 7、反选所有选项
    41. fruits.deselect_all()
    42. sleep(1)
    43. # 选中所有选项
    44. for f in option:
    45. fruits.select_by_visible_text(f.text)
    46. sleep(1)
    47. # 8、反选value值为 apple 的选项
    48. fruits.deselect_by_value('apple')
    49. sleep(1)
    50. # 9、反选第2个选项
    51. fruits.deselect_by_index(1)
    52. sleep(1)
    53. # 10、反选文本内容为 peach 的选项
    54. fruits.deselect_by_visible_text('peach')
    55. if __name__ == '__main__':
    56. case = TestCase()
    57. case.test_select()

    运行过程:
    224.gif
    打印结果:
    image.png