下拉框实战 —Python自动化测试实战(6)

发表于:2019-6-19 11:20

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:无涯    来源:51Testing软件测试网原创

分享:
  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软件测试网获得电子工业出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号