首页 > 其他分享 >掌握Select类,轻松实现下拉列表定位

掌握Select类,轻松实现下拉列表定位

时间:2024-06-18 16:30:15浏览次数:19  
标签:选项 self selected 轻松 列表 Select path select

在Web自动化测试中,我们经常需要操作网页上的下拉列表。在Python的Selenium库中,提供了Select类来方便地处理下拉列表。本文将详细介绍如何使用Select类来实现下拉列表的定位和操作。
示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<form action="javascript:alert('test')">
    province:
    <SELECT name="province" id="province" multiple>
        <option value="bj">BeiJing</option>
        <option value="tj">TianJin</option>
        <option value="sy">ShenYang</option>
        <option value="sh">ShangHai</option>
        <option value="hd">HanDan</option>
    </SELECT>

</form>

</body>
</html>

selenium代码

import os

from selenium import webdriver
from time import sleep

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


class TestCase(object):
    def __init__(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        path = os.path.dirname(os.path.abspath(__file__))
        file_path = 'file:///' + path + os.sep + 'forms3.html'
        self.driver.get(file_path)
        sleep(2)

    def test_select(self):
        se = self.driver.find_element(By.ID,'province')
        select = Select(se)
        select.select_by_index(2)

        sleep(2)

        select.select_by_value('hd')

        sleep(2)

        select.select_by_visible_text('ShangHai')

        sleep(2)
        self.driver.quit()

    def test_select2(self):
        se = self.driver.find_element(By.ID, 'province')
        select = Select(se)

        for i in range(2):
            select.select_by_index(i)
            sleep(1)
        sleep(3)

        select.deselect_all()

        self.driver.quit()

    def test_select3(self):
        se = self.driver.find_element(By.ID, 'province')
        select = Select(se)

        for option in select.options:
            print(option.text)

        self.driver.quit()

if __name__ == '__main__':
    case =TestCase()
    # case.test_select()
    # case.test_select2()
    case.test_select3()

1. 引入Select类

首先,我们需要从selenium.webdriver.support.select模块中导入Select类。

from selenium.webdriver.support.select import Select

2. 定位下拉列表元素

在使用Select类之前,我们需要先定位到下拉列表元素。这里我们使用find_element方法来定位。

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
path = os.path.dirname(os.path.abspath(__file__))
file_path = 'file:///' + path + os.sep + 'forms3.html'
driver.get(file_path)

# 定位下拉列表元素
select_element = driver.find_element(By.ID, "province")

3. 创建Select对象

接下来,我们需要创建一个Select对象,将定位到的下拉列表元素作为参数传入。

# 创建Select对象
select = Select(select_element)

4. 选择下拉列表选项

4.1 通过索引选择

我们可以使用select_by_index方法通过索引来选择下拉列表中的选项。注意索引是从0开始的。

# 选择第二个选项(索引为1)
select.select_by_index(1)

4.2 通过值选择

我们还可以使用select_by_value方法通过选项的value属性来选择下拉列表中的选项。

# 选择value为"tj"的选项
select.select_by_value("tj")

4.3 通过可见文本选择

另外,我们还可以使用select_by_visible_text方法通过选项的可见文本来选择下拉列表中的选项。

# 选择文本为"天津"的选项
select.select_by_visible_text("天津")

5. 取消选择所有选项

如果我们想要取消选择所有选项,可以使用deselect_all方法。

# 取消选择所有选项
select.deselect_all()

6. 获取所有选项

有时候,我们可能需要获取下拉列表中的所有选项。这时,我们可以使用options属性来获取所有选项。

# 获取所有选项
options = select.options
for option in options:
    print(option.text)

7.其他操作

除了上述提到的select_by_indexselect_by_valueselect_by_visible_text方法外,Select类还提供了其他一些操作下拉列表的方法。下面举例说明:

7.1通过选项文本选择

我们还可以使用select_by_partial_text方法通过选项的部分文本来选择下拉列表中的选项。

# 选择文本包含"Jin"的选项
select.select_by_partial_text("Jin")

7.2 获取当前选中的选项

我们可以使用first_selected_option属性来获取当前选中的选项。

# 获取当前选中的选项
selected_option = select.first_selected_option
print(selected_option.text)

7.3 判断选项是否被选中

我们可以使用is_selected方法来判断某个选项是否被选中。

# 判断第二个选项是否被选中
is_selected = select.is_selected(1)
print(is_selected)

7.4取消选中某个选项

我们可以使用deselect_by_indexdeselect_by_valuedeselect_by_visible_text方法来取消选中某个选项。

# 取消选中第一个选项
select.deselect_by_index(0)

7.5获取所有选中的选项

我们可以使用all_selected_options属性来获取所有选中的选项。

# 获取所有选中的选项
selected_options = select.all_selected_options
for option in selected_options:
    print(option.text)

总结:本文详细介绍了如何使用Select类来实现下拉列表的定位和操作。通过掌握这些技巧,我们可以更加高效地进行Web自动化测试。希望本文对您有所帮助!

标签:选项,self,selected,轻松,列表,Select,path,select
From: https://blog.csdn.net/python_jeff/article/details/139744997

相关文章

  • 实现一个可以对数据列表进行筛选的功能
    在前端开发中,实现数据列表筛选是一个非常常见的功能,特别是在需要处理大量数据的应用中。无论是电商网站的商品列表筛选,还是后台管理系统的用户列表筛选,这样的功能都显得尤为重要。本文将详细介绍如何实现一个简单而高效的数据列表筛选功能,包括示例代码和关键点解析。需求分......
  • 轻松便捷,文件分享新选择,易易二维码
    在数字化快速发展的今天,文件分享与传输已经成为我们日常生活和工作中不可或缺的一部分。然而,随着文件体积的增大和数量的增多,如何高效、安全、便捷地分享文件成为了许多人头疼的问题。今天,我要向大家推荐一款革命性的在线工具——易易二维码,它将彻底改变你的文件分享体验。一、易......
  • 【Stable Diffusion教程】AI绘画工具SD如何安装使用?三种方法带你轻松上手!(附安装包和云
    大家好,我是向阳AI绘画专业工具StableDiffusion在哪里用怎么安装?这一期给大家介绍三种使用SD的方法,无论你有没有专业显卡都能轻松上手SD哦~一、SD本地部署秋葉安装包安装方法如果你有进一步的需求,想要学习SD的高端玩法,有高端显卡的同学们我建议本地安装部署一下SD。这里要......
  • HTML(5)——列表表格
    列表无序列表作用:布局排列整齐的不需要规定顺序的区域。标签:ul嵌套il,ul是无序列表,li是列表条目注:ul标签只能包裹li标签,li标签可以包含任何内容有序列表作用:布局排列整齐的需要规定顺序的区域。标签:ol嵌套li,ol是有序列表。注:ol标签只能包裹li标签,li标签里面可以包裹任何......
  • PHP面试宝典之Laravel篇(15个常见问题轻松搞定Laravel面试)
    引言在PHP的众多框架中,Laravel以其优雅的语法、丰富的功能以及强大的社区支持而脱颖而出。对于PHP开发者而言,掌握Laravel已成为迈向高级开发的必经之路。本文将深入探讨Laravel框架的核心概念和高级特性,为即将面临Laravel相关工作面试的开发者提供一个全面的复习材料。本文最......
  • 揭示SOCKS5代理服务器列表的重要性
    在复杂的网络安全领域中,SOCKS5代理在保护在线活动方面发挥着关键作用。本文深入探讨了SOCKS5代理服务器列表的细节,探讨了它们的应用、优势以及在增强在线安全和隐私方面不可或缺的功能。一、理解SOCKS5代理服务器列表作为在客户端和服务器之间进行通信的协议,SOCKS5因其多功......
  • 揭示SOCKS5代理服务器列表的重要性
    在复杂的网络安全领域中,SOCKS5代理在保护在线活动方面发挥着关键作用。本文深入探讨了SOCKS5代理服务器列表的细节,探讨了它们的应用、优势以及在增强在线安全和隐私方面不可或缺的功能。一、理解SOCKS5代理服务器列表作为在客户端和服务器之间进行通信的协议,SOCKS5因其多功......
  • QT 中QLineEdit 的常用成员函数和信号的详细列表
    在Qt中,QLineEdit 是一个用于单行文本输入的控件。它提供了丰富的成员函数(methods)和信号(signals)来支持各种文本输入和交互操作。以下是一些 QLineEdit 的常用成员函数和信号的详细列表:常用成员函数(Methods)setText(constQString&text)QT中QLineEdit信号的用法(textEdite......
  • 用AI做中式吐槽漫画,10分钟一个原创作品,轻松实现月入6位数
    在现代社会,我们每个人都面临着各种压力。工作、学习、家庭等各种事务让我们的情绪倍受压迫,我们急需找到一种方式来释放这些情绪。因此,将生活中那些让人疲惫不堪的场景以幽默的漫画形式表达出来,已经成为了一个新兴的行业。而AI的出现,更是让我们这些没有美术绘画功底的人也能......
  • EasyRecovery数据恢复软件电脑的超级救星,无论是误删除的文件、格式化的硬盘还是病毒攻
    EasyRecovery数据恢复软件,是我近期用过最神奇的产品之一了!它就像是电脑的超级救星,无论是误删除的文件、格式化的硬盘还是病毒攻击,都能轻松搞定!让我给大家详细介绍一下这个神器吧!EasyRecovery数据恢复软件的功能真的是非常强大!它可以扫描并恢复各种类型的文件,包括照片、视频、......