3.4弹出框实战
1.Alert类的详解
在UI自动化测试中经常会遇到Alert弹出框的场景。在HTML的Javascript交互中主要有Alert警告框、Confirm确认框、Prompt消息对话框。在Selenium中对于弹出框的处理方可以使用alert模块中的Alert类,在Alert类中,方法text用来获取Alert弹出框的文本信息。accept和dismiss方法主要应用在Confirm弹出确认框中,accept用来接受确认框,dismiss用来拒绝确认框。send_keys主要应用在Prompt消息对话框中,在输入框中输入要输入的值。在Selenium中是通过switch_to_alert方法调用Alert类中的方法,而switch_to_alert方法是属于WebDriver类的方法。
2.警告框的处理
这里以百度搜索设置为例,在进行搜索设置后点击"保存设置"按钮,弹出alert对话框,点击"确定"按钮,如图3-4-1所示。
图3-4-1
要想点击"保存设置"按钮后,获取Alert弹出框的文本信息,点击弹出框中的"确定"按钮,实现的代码如下:
#!/usr/bin/envpython #-*-coding:utf-8-*- #author:wuya fromseleniumimportwebdriverfromselenium.webdriver.common.alertimportAlertfromselenium.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) #点击搜索设置按钮 driver.find_element_by_css_selector('#gxszButton> a.prefpanelgo').click() t.sleep(2) #获取弹出框的文本信息 print('alert弹出框的文本信息为:{0}'.format(driver.switch_to_alert().text)) #点击alert弹出框中的确定按钮 driver.switch_to_alert().accept() |
运行以上代码后,会打印出Alert的文本信息。
3.确认框的处理
Confirm是弹出确认的对话框,用户可以选择"确定"或者"取消"按钮。点击"确定"按钮调用的方法是accept,点击"取消"按钮调用的方法是dismiss,如图3-4-2所示。
图3-4-2
这部分的HTML交互代码如下:
<html> <metacharset="UTF-8"> <head> <scripttype="text/javascript">functiondisp_confirm() {varr=confirm("请点击按钮")if(r==true) {document.write("您点击了确认按钮!") }else{document.write("您点击了取消按钮!") } } </script> </head> <body> <center> <inputtype="button"onclick="disp_confirm()"value="请点击我,谢谢!" /> </center> </body> </html> |
实现点击"确定"按钮的代码如下:
#!/usr/bin/envpython #-*-coding:utf-8-*- #author:wuya fromseleniumimportwebdriverfromselenium.webdriver.common.alertimportAlertimporttimeast driver=webdriver.Firefox()driver.maximize_window()driver.implicitly_wait(30)driver.get('file:///D:/git/Python/ActualCombat/Chapter2/html/confirm.html') #点击按钮 driver.find_element_by_css_selector('body>center>input[type="button"]').click()t.sleep(2) #点击"确定"按钮 driver.switch_to_alert().accept()t.sleep(2)driver.quit() |
4.消息对话框的处理
Prompt消息对话框,在JavaScript中用于询问一些需要与用户交互的信息。要想在Prompt消息对话框中输入信息,用到的方法是send_keys,如图3-4-3所示。
图3-4-3
实现的HTML代码如下:
<html> <metacharset="UTF-8"> <head> <scripttype="text/javascript">functiondisp_prompt() {varname=prompt("请输入您的姓名:","")if(name!=null&&name!="") {document.write("Hello"+name+"!") }} </script> </head> <body> <center> <inputtype="button"onclick="disp_prompt()"value="请点击我,谢谢!" /> </center> </body> </html> |
在弹出的输入框中输入姓名后,点击"确定"按钮。实现的测试代码如下:
#!/usr/bin/envpython #-*-coding:utf-8-*- #author:wuya fromseleniumimportwebdriverfromselenium.webdriver.common.alertimportAlertimporttimeast driver=webdriver.Firefox()driver.maximize_window()driver.implicitly_wait(30)driver.get('file:///D:/git/Python/ActualCombat/Chapter2/html/prompt.html ') #点击按钮 driver.find_element_by_css_selector('body>center>input[type="button"]').click()t.sleep(2) #在弹出的输入框中输入姓名 driver.switch_to_alert().send_keys('无涯')t.sleep(2)driver.switch_to_alert().accept()t.sleep(3)driver.quit() |
版权声明:51Testing软件测试网获得电子工业出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。