3.3下拉框实战
1.Select类的详解
在UI自动化测试中,经常会遇到下拉框的应用。针对下拉框,Selenium提供了Select类来处理,Select类在select模块中。使用Select类首先需要导入,导入方式是fromselenium.webdriver.support.selectimportSelect。在Select类中,构造方法的参数是webelement,检查指定的元素时,如果参数错误就会抛出UnexpectedTagNameExpection的异常错误信息。在Select类中提供了很多方法可在下拉框定位中使用,下面具体介绍这些方法的应用。
2.下拉框定位的思路
这里以在百度搜索设置中设定期望搜索结果显示的条数为例,说明下拉框操作方式,如图3-3-1所示。
图3-3-1
这部分的HTML代码如下:
<selectid="nr"name="NR"> <optionvalue="10"selected="">每页显示10条</option> <optionvalue="20">每页显示20条</option> <optionvalue="30">每页显示50条</option> </select> |
下拉框的元素属性ID是nr,在图3-3-1中,实现选择下拉框选项内容的步骤为:
(1)首先定位到Select下拉框的元素属性,具体代码是nr=driver.find_element_by_id('nr')。
(2)实例化Select类,参数为nr,具体代码为select=Select(nr)。
(3)Select实例化后的对象select可以调用Select类的任何一个方法。
3.索引定位实战
使用索引的方式实现下拉框选项的选择,用到的方法是select_by_index。该方法的参数是索引值。例如,想要实现每页显示50条,它在第三位(参见图3-3-1),由于索引是从0开始的,所以索引就是2,实现的代码如下:
#!/usr/bin/envpython #-*-coding:utf-8-*- #author:wuya fromseleniumimportwebdriverfromselenium.webdriver.support.selectimportSelectfromselenium.webdriver.common.action_chainsimportActionChainsimporttimeast driver=webdriver.Firefox()driver.maximize_window()driver.implicitly_wait(30)driver.get('http://www.baidu.com') #实现鼠标悬浮到百度首页的设置 element=driver.find_element_by_css_selector('a.pf:nth-child(8)')t.sleep(3) ActionChains(driver).move_to_element(element).perform()t.sleep(3) #点击设置中的搜索设置按钮 driver.find_element_by_css_selector('.setpref').click()t.sleep(2) #定位到下拉框的元素属性 nr=driver.find_element_by_name('NR') #实例化Select类 select=Select(nr)select.select_by_index(2)print('下拉框选择的新条数是:',nr.get_attribute('value'))t.sleep(3)driver.quit() |
4.value定位实战
通过Value值可定位下拉框中的选项,用到的方法是select_by_value。该方法的参数是下拉框中具体的Value值,需要选择下拉框中的哪个值,直接在该方法的参数中填写具体的Value值即可。本例中的Value值是10、20、50,这里选择在下拉框中每页显示20条,则对应的Value值是20,实现的代码如下:
#!/usr/bin/envpython #-*-coding:utf-8-*- #author:wuya fromseleniumimportwebdriverfromselenium.webdriver.support.selectimportSelectfromselenium.webdriver.common.action_chainsimportActionChainsimporttimeast driver=webdriver.Firefox()driver.maximize_window()driver.implicitly_wait(30)driver.get('http://www.baidu.com') #实现鼠标悬浮到百度首页的设置 element=driver.find_element_by_css_selector('a.pf:nth-child(8)')t.sleep(3) ActionChains(driver).move_to_element(element).perform()t.sleep(3) #点击设置中的搜索设置按钮 driver.find_element_by_css_selector('.setpref').click()t.sleep(2) #定位到下拉框的元素属性 nr=driver.find_element_by_name('NR') #实例化Select类 select=Select(nr) #按value值的方式来选择下拉框中的内容 select.select_by_value('20')print('下拉框选择的新条数是:',nr.get_attribute('value'))t.sleep(3)driver.quit() |
5.文本定位实战
使用文本的方式实现对下拉框中选项的选择,用到的方法是select_by_visible_text,参数是具体的text值。本例中搜索设置下拉框的文本信息具体为"每页显示10条""每页显示20条""每页显示50条"。这里选择在下拉框中每页显示50条,那么调用的时候,实际参数就是"每页显示50条",实现该测试点的代码如下:
#!/usr/bin/envpython #-*-coding:utf-8-*- #author:wuya fromseleniumimportwebdriverfromselenium.webdriver.support.selectimportSelectfromselenium.webdriver.common.action_chainsimportActionChainsimporttimeast driver=webdriver.Firefox()driver.maximize_window()driver.implicitly_wait(30)driver.get('http://www.baidu.com') #实现鼠标悬浮到百度首页的设置 element=driver.find_element_by_css_selector('a.pf:nth-child(8)')t.sleep(3) ActionChains(driver).move_to_element(element).perform()t.sleep(3) #点击设置中的搜索设置按钮 driver.find_element_by_css_selector('.setpref').click()t.sleep(2) #定位到下拉框的元素属性 nr=driver.find_element_by_name('NR') #实例化Select类 select=Select(nr) #按value值的方式来选择下拉框中的内容 select.select_by_visible_text('每页显示50条')print('下拉框选择的新条数是:',nr.get_attribute('value'))t.sleep(3)driver.quit() |
版权声明:51Testing软件测试网获得电子工业出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。