Selenium处理多选项下拉框列表

2019-10-20 18:34:50 浏览数 (1)

你穿过世事朝我走来 迈出的每一步都留下了一座空城 这时,一支从来世射出的毒箭命定了我 唯一的退路 --仓央嘉措

写在前面


上一篇文章讲解了单选项下拉框列表处理方式,点击链接跳转详情:Selenium处理单选项下拉框列表

单选项下拉框列表和多选项下拉框列表处理方法基本相同,都是通过使用WebDriver提供的Select类来处理下拉框。 本文详细讲解如何使用Selenium处理多选项下拉框列表。

通过选项序号选项名称选项值选择下拉框内容


多选框下拉框处理方式和单选框内容相同,处理思路如下:

1.先定位Select元素类;

2.然后循环打印出元素的关键属性值;

3.根据元素序号(index)选项名称(name)选项值(value)选择对应的下拉框内容;

需要注意:要求下拉框的选项必须要有相应的属性,例如Index属性,index=”1”。

本文演示选择三种方法组合方式进行元素选择,当然你可以选择其中一种方式进行多个选项选择。为了更直观的演示处理效果,制作了一个html。多选项下拉框传送门(复制到浏览器打开):

代码语言:javascript复制
https://www.testclass.cn/test_html/Sports_Multiple.html

代码如下所示:

代码语言:javascript复制
#select.py
#www.testclass.cn
#Altumn
import time
from selenium import webdriver
from selenium.webdriver.support.ui import Selecturl ="https://www.testclass.cn/test_html/Sports_Multiple.html"
driver=webdriver.Chrome()
driver.get(url)
#获取select页面元素对象;
select_element=Select(driver.find_element_by_name('Sports'))
#获取所有选择项的页面元素对象;
all_options=select_element.options
#打印选项总数;
print("列表选项总数:",len(all_options))
print("************************通过三种选择方式选择列表选项************************")
#1.通过序号选择第二个元素,注意元素序号从0开始;
select_element.select_by_index(1)
#2.通过选项名称"足球"选择内容;
select_element.select_by_visible_text("足球")
#3.通过选项值"paiqiu"选择内容;
select_element.select_by_value("paiqiu")
#打印最后选择选项名称;    

for options in select_element.all_selected_options:
   print("你最后多选的内容为:",options.text)

#等待一下,演示效果;
time.sleep(3)
driver.quit()

执行结果如下所示:

代码语言:javascript复制
PS C:UsersWangXiaoDesktoppython> cd 'c:UsersWangXiaoDesktoppython'; ${env:PYTHONIOENCODING}='UTF-8'; ${env:PYTHONUNBUFFERED}='1'; & 'C:UsersWangXiaoAppDataLocalProgramsPythonPython36python.exe' 'c:UsersWangXiao.vscodeextensionsms-python.python-2018.12.1pythonFilesptvsd_launcher.py' '--default' '--client' '--host' 'localhost' '--port' '57205' 'c:UsersWangXiaoDesktoppythonUntitled-1111111111111111.py'
DevTools listening on ws://127.0.0.1:12715/devtools/browser/df30a194-03bb-4cab-9f0d-cbd6d32c3317
列表选项总数: 11

************************通过三种选择方式选择列表选项************************
你最后多选的内容为: 足球
你最后多选的内容为: 篮球
你最后多选的内容为: 排球

断言多选列表选项值


以上内容对多选列表进行了内容选择,我们在做自动化测试的时候需要增加断言来判断是否选择成功。接下来我们就针对多选列表选项值进行断言。断言的方式有几种,下面演示的是其中一种方式。

同样,我们使用上面所用的html:Sports_Multiple.html传送门(复制到浏览器打开):

代码语言:javascript复制
https://www.testclass.cn/test_html/Sports_Multiple.html

代码如下所示:

代码语言:javascript复制
#select.py
#www.testclass.cn
#Altumn
import time
from selenium import webdriver
from selenium.webdriver.support.ui import Selecturl ="https://www.testclass.cn/test_html/Sports_Multiple.html"
driver=webdriver.Chrome()
driver.get(url)
#获取select页面元素对象;
select_element=Select(driver.find_element_by_name('Sports'))
#获取所有选择项的页面元素对象;
all_options=select_element.options
#打印选项总数;
print("列表选项总数:",len(all_options))
print("************************通过三种选择方式选择列表选项************************")
#1.通过序号选择第二个元素,注意元素序号从0开始;
select_element.select_by_index(1)
#2.通过选项名称"足球"选择内容;
select_element.select_by_visible_text("足球")
#3.通过选项值"paiqiu"选择内容;
select_element.select_by_value("paiqiu")
#打印最后选择选项名称;    
for options in select_element.all_selected_options:
   print("你最后多选的内容为:",options.text)

#断言先定义一个列表选项值,如果想验证异常的情况,可以把这个列表中部分内容删除;
expect_option_List=['足球','篮球','排球']
#循环打印出选项序号和对应的选项属性;

for i in range(len(select_element.all_selected_options)):
   print("元素序号:"   str(i))    
    #获取列表内容,输出text;
   options_List=select_element.options[i].get_attribute("text")    
    #核对获取的内容是否与预期的列表内容相匹配;
   if options_List in expect_option_List:
       print(options_List,"在期望的列表中存在,核对正确。")    
    else:
       print(options_List,"不存在期望的列表中,核对错误。")  
#等待一下,演示效果;
time.sleep(3)
driver.quit()

执行结果如下:

代码语言:javascript复制
PS C:UsersWangXiaoDesktoppython> cd 'c:UsersWangXiaoDesktoppython'; ${env:PYTHONIOENCODING}='UTF-8'; ${env:PYTHONUNBUFFERED}='1'; & 'C:UsersWangXiaoAppDataLocalProgramsPythonPython36python.exe' 'c:UsersWangXiao.vscodeextensionsms-python.python-2018.12.1pythonFilesptvsd_launcher.py' '--default' '--client' '--host' 'localhost' '--port' '52962' 'c:UsersWangXiaoDesktoppythonUntitled-1111111111111111.py'
DevTools listening on ws://127.0.0.1:12643/devtools/browser/54b3ea64-4275-4ecc-a14d-c207907e7541
列表选项总数: 11

************************通过三种选择方式选择列表选项************************
你最后多选的内容为: 足球
你最后多选的内容为: 篮球
你最后多选的内容为: 排球
元素序号:0足球 在期望的列表中存在,核对正确。
元素序号:1篮球 在期望的列表中存在,核对正确。
元素序号:2排球 在期望的列表中存在,核对正确。

通过选项序号选项名称选项值取消已选择的下拉框内容


上面内容,演示了如何选择下拉框内容,接下来演示一下如何取消已选择的下拉框内容。为了直观的演示效果,同样使用上面的Html页面,多选项下拉框传送门(复制到浏览器打开):

代码语言:javascript复制
https://www.testclass.cn/test_html/Sports_Multiple.html

代码如下所示:

代码语言:javascript复制
#select.py
#www.testclass.cn
#Altumn
import time
from selenium 
import webdriver
from selenium.webdriver.support.ui import Selecturl ="https://www.testclass.cn/test_html/Sports_Multiple.html"driver=webdriver.Chrome()
driver.get(url)#获取select页面元素对象;
select_element=Select(driver.find_element_by_name('Sports'))
#获取所有选择项的页面元素对象;
all_options=select_element.options
#打印选项总数;
print("列表选项总数:",len(all_options))
print("************************通过三种选择方式选择列表选项************************")
#1.通过序号选择第二个元素,注意元素序号从0开始;
select_element.select_by_index(1)
#2.通过选项名称"足球"选择内容;
select_element.select_by_visible_text("足球")
#3.通过选项值"paiqiu"选择内容;
select_element.select_by_value("paiqiu")
#打印最后选择选项名称;    
for options in select_element.all_selected_options:
   print("你最后多选的内容为:",options.text)
#等待一下,演示效果;time.sleep(3)
print("************************取消已选择的列表选项************************")
#1.通过序号取消选择第二个元素,注意元素序号从0开始;
select_element.deselect_by_index(1)
#2.通过选项名称"足球"取消选择内容;
select_element.deselect_by_visible_text("足球")
#3.通过选项值"paiqiu"取消选择内容;
select_element.deselect_by_value("paiqiu")
#等待一下,演示效果;
time.sleep(3)
driver.quit()

执行结果如下:

代码语言:javascript复制
PS C:UsersWangXiaoDesktoppython> cd 'c:UsersWangXiaoDesktoppython'; ${env:PYTHONIOENCODING}='UTF-8'; ${env:PYTHONUNBUFFERED}='1'; & 'C:UsersWangXiaoAppDataLocalProgramsPythonPython36python.exe' 'c:UsersWangXiao.vscodeextensionsms-python.python-2018.12.1pythonFilesptvsd_launcher.py' '--default' '--client' '--host' 'localhost' '--port' '65183' 'c:UsersWangXiaoDesktoppythonUntitled-1111111111111111.py'
DevTools listening on ws://127.0.0.1:12854/devtools/browser/e7cb7afe-6277-4dad-8f3a-f81c59efd332
列表选项总数: 11
************************通过三种选择方式选择列表选项************************
你最后多选的内容为: 足球
你最后多选的内容为: 篮球
你最后多选的内容为: 排球
************************取消已选择的列表选项************************

0 人点赞