Selenium处理多选项下拉框列表
写在前面
上一篇文章讲解了单选项下拉框列表处理方式,点击链接跳转详情:Selenium处理单选项下拉框列表
单选项下拉框列表和多选项下拉框列表处理方法基本相同,都是通过使用WebDriver提供的Select类来处理下拉框。 本文详细讲解如何使用Selenium处理多选项下拉框列表。
通过\选项序号\选项名称\选项值\选择下拉框内容
多选框下拉框处理方式和单选框内容相同,处理思路如下:
1.先定位Select元素类;
2.然后循环打印出元素的关键属性值;
3.根据元素序号(index)选项名称(name)选项值(value)选择对应的下拉框内容;
需要注意:要求下拉框的选项必须要有相应的属性,例如Index属性,index=”1”。
本文演示选择三种方法组合方式进行元素选择,当然你可以选择其中一种方式进行多个选项选择。为了更直观的演示处理效果,制作了一个html。多选项下拉框传送门: Sports_Multiple.html[请点点我]
代码如下所示:
#select.py #www.testclass.cn #Altumn import time from selenium import webdriver from selenium.webdriver.support.ui import Select url ="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()
执行结果如下所示:
PS C:\Users\WangXiao\Desktop\python> cd 'c:\Users\WangXiao\Desktop\python'; ${env:PYTHONIOENCODING}='UTF-8'; ${env:PYTHONUNBUFFERED}='1'; & 'C:\Users\WangXiao\AppData\Local\Programs\Python\Python36\python.exe' 'c:\Users\WangXiao\.vscode\extensions\ms-python.python-2018.12.1\pythonFiles\ptvsd_launcher.py' '--default' '--client' '--host' 'localhost' '--port' '57205' 'c:\Users\WangXiao\Desktop\python\Untitled-1111111111111111.py' DevTools listening on ws://127.0.0.1:12715/devtools/browser/df30a194-03bb-4cab-9f0d-cbd6d32c3317 列表选项总数: 11 ************************通过三种选择方式选择列表选项************************ 你最后多选的内容为: 足球 你最后多选的内容为: 篮球 你最后多选的内容为: 排球
断言多选列表选项值
以上内容对多选列表进行了内容选择,我们在做自动化测试的时候需要增加断言来判断是否选择成功。接下来我们就针对多选列表选项值进行断言。断言的方式有几种,下面演示的是其中一种方式。
同样,我们使用上面所用的html:Sports_Multiple.html 传送门: Sports_Multiple.html[请点点我]
代码如下所示:
#select.py #www.testclass.cn #Altumn import time from selenium import webdriver from selenium.webdriver.support.ui import Select url ="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()
执行结果如下:
PS C:\Users\WangXiao\Desktop\python> cd 'c:\Users\WangXiao\Desktop\python'; ${env:PYTHONIOENCODING}='UTF-8'; ${env:PYTHONUNBUFFERED}='1'; & 'C:\Users\WangXiao\AppData\Local\Programs\Python\Python36\python.exe' 'c:\Users\WangXiao\.vscode\extensions\ms-python.python-2018.12.1\pythonFiles\ptvsd_launcher.py' '--default' '--client' '--host' 'localhost' '--port' '52962' 'c:\Users\WangXiao\Desktop\python\Untitled-1111111111111111.py' DevTools listening on ws://127.0.0.1:12643/devtools/browser/54b3ea64-4275-4ecc-a14d-c207907e7541 列表选项总数: 11 ************************通过三种选择方式选择列表选项************************ 你最后多选的内容为: 足球 你最后多选的内容为: 篮球 你最后多选的内容为: 排球 元素序号:0 足球 在期望的列表中存在,核对正确。 元素序号:1 篮球 在期望的列表中存在,核对正确。 元素序号:2 排球 在期望的列表中存在,核对正确。
通过\选项序号\选项名称\选项值\取消已选择的下拉框内容
上面内容,演示了如何选择下拉框内容,接下来演示一下如何取消已选择的下拉框内容。为了直观的演示效果,同样使用上面的Html页面,多选项下拉框传送门: Sports_Multiple.html[请点点我]
代码如下所示:
#select.py #www.testclass.cn #Altumn import time from selenium import webdriver from selenium.webdriver.support.ui import Select url ="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()
执行结果如下:
PS C:\Users\WangXiao\Desktop\python> cd 'c:\Users\WangXiao\Desktop\python'; ${env:PYTHONIOENCODING}='UTF-8'; ${env:PYTHONUNBUFFERED}='1'; & 'C:\Users\WangXiao\AppData\Local\Programs\Python\Python36\python.exe' 'c:\Users\WangXiao\.vscode\extensions\ms-python.python-2018.12.1\pythonFiles\ptvsd_launcher.py' '--default' '--client' '--host' 'localhost' '--port' '65183' 'c:\Users\WangXiao\Desktop\python\Untitled-1111111111111111.py' DevTools listening on ws://127.0.0.1:12854/devtools/browser/e7cb7afe-6277-4dad-8f3a-f81c59efd332 列表选项总数: 11 ************************通过三种选择方式选择列表选项************************ 你最后多选的内容为: 足球 你最后多选的内容为: 篮球 你最后多选的内容为: 排球 ************************取消已选择的列表选项************************
作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可
文章评论(2)
看到这个文章,刚好想到我们系统也需要支持多选,感谢
自动化测试学习交流群:670250199