selenium对网页的下拉列表操作

在自动化测试的过程中,需要对网页中的下拉列表操作,对下拉列表的操作与操作其他控件稍有不同。Webdriver提供了一个Select类,用于与下拉列表和下拉菜单进行交互,它提供了丰富的功能和方法实现与用户的交互,主要有如下步骤:

1、导入Select类

from selenium.webdriver.support.select import Select

2、定位下拉列表

list_ele = driver.find_element(By.XPATH, "xpath表达式")

3、把定位的下拉列表封装为Select对象

s1 = Select(list_ele)

4、使用Select对象的方法,操作选项

s1.select_by_index(1)

 

select下拉列表操作的常用方法:

一、选中下拉列表:

根据索引值,索引从0开始》》》select_by_index(索引值)

根据选项的value属性》》》select_by_value("value属性值")

根据选项的文本值》》》select_by_visible_text("选项的文本")

二、获取下拉列表所有选项

list_option = []

for item in s1.options:

  list_option.append(item.text)

print("下拉列表的所有选项是:", list_option)

三、取消选中的选项:

通过选项索引值取消,索引从0开始》》》deselect_by_index(索引值)

通过选项的value属性值取消》》》deselect_by_value("value属性值")

通过选项的文本值取消》》》deselct_by_visible_text("选项文本值")

取消所有选项》》》deselect_all()

四、获取所有已选中的选项:

for item in s1.all_selected_options:

  print("被选中的选项是:", item.text)

五、获取第一个选中的选项:

first_selected = s1.first_selected_option:

print("第一个选中的选项是:"first_selected.text)

举个栗子:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
import time


driver = webdriver.Firefox()
test_url = "http://sahitest.com/demo/selectTest.htm"
driver.get(test_url)
driver.maximize_window()
time.sleep(5)

# 定位下拉列表的位置
list1 = driver.find_element(By.ID, "s1Id")
list2 = driver.find_element(By.ID, "s4Id")
# 实例化下拉列表
s1 = Select(list1)
s2 = Select(list2)


def ope_list1():
    list_option = []
    # 将下拉列表的所有选项放在list_option里
    for item in s1.options:
        list_option.append(item.text)
    print("第一个下拉列表的所有选项是:", list_option)
    # 判断下拉列表是否可以多选
    if s1.is_multiple:
        print("第一个下拉列表可以多选")
    else:
        print("第一个下拉列表不可以多选")
    # 根据索引选中第二个列表选项
    s1.select_by_index(1)
    # 根据列表选项值选中第三个选项
    s1.select_by_value("o2")
    # 根据列表选项的文本选中第三个选项
    s1.select_by_visible_text("o3")


def ope_list2():
    list_option = []
    for item in s2.options:
        list_option.append(item.text)
    print("第二个下拉列表的所有选项是:", list_option)
    if s2.is_multiple:
        print("第二个下拉列表可以多选")
    else:
        print("第二个下拉列表不可以多选")
    s2.select_by_index(1)
    # 根据列表选项值选中第三个选项
    s2.select_by_value("o2val")
    # 根据列表选项的文本选中第三个选项
    s2.select_by_visible_text("o3")
    print("第二个下拉列表选中的第一个选项是:", s2.first_selected_option.text)
    all_selected_option = []
    for item in s2.all_selected_options:
        all_selected_option.append(item.text)
    print("第二个下拉列表所有被选中的选项是:", all_selected_option)
    # 取消第三个选项
    s2.deselect_by_index(3)
    # 取消所有选中选项
    s2.deselect_all()


if __name__ == '__main__':
    ope_list1()
    ope_list2()
    time.sleep(3)
    driver.close()

 

运行成功

 

posted @ 2021-04-10 11:01  逆风前进的狼  阅读(1028)  评论(0编辑  收藏  举报