在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_index
、select_by_value
和select_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_index
、deselect_by_value
或deselect_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