WebDriver API之消息框处理

webdriver处理javascript生成的alert、confirm、prompt消息框的方式十分简单,都是统一使用switch_to.alert将driver的控制权限交给消息框,然后再调用相应方法进行操作:
text:返回alert/confirm/prompt中的文字信息
accep():接受现有警告信息,相当于确认按钮
dismiss():放弃现有警告信息,相当于取消按钮
send_keys(keysToSend):发送文本至警告框
一、警告消息框alert
alert 方法生成的警告消息框提供了一个“确定”按钮让用户关闭该消息框,并且该消息框是模式对话框,也就是说,用户必须先关闭该消息框然后才能继续进行操作。
案例:百度搜索设置中,保存后弹出警告框,确认接收该提示信息。

#导包、创建浏览器对象、获取百度的首页
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")

#控制鼠标悬浮到“设置”按钮上
setButton = driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(setButton).perform()
driver.find_element_by_link_text("搜索设置").click()
time.sleep(3)
#时间等待的作用,如果不加的话可能会元素定位失败
# driver.find_element_by_xpath('//*[@id="SL_0"]').click()
# time.sleep(2)
# driver.find_element_by_xpath('//*[@id="nr"]/option[2]').click()
# time.sleep(2)
#点击保存设置按钮,弹出一个警告框
driver.find_element_by_link_text("保存设置").click()
time.sleep(2)
#就可以对他做操作啦,由于版本问题,switch_to.alert
dd = driver.switch_to.alert
#获取alert里面的文本信息
tt = dd.text
#已经记录下您的使用偏好
print(tt)
time.sleep(2)

#接受窗口信息(确定这个文本框)
# dd.accept()
dd.dismiss()

#退出浏览器对象
driver.quit()

二、确认消息框confirm
使用确认消息框可向用户问一个“是-或-否”问题,并且用户可以选择单击“确定”按钮或者单击“取消”按钮。confirm 方法的返回值为 true 或 false。该消息框也是模式对话框:用户必须在响应该对话框(单击一个按钮)将其关闭后,才能进行下一步操作。
案例:复制下面html代码,保存在本地的文本文件中,并将文件重命名为:confirm.html,文件保存在:e:\confirm.html
编写自动化测试脚本,处理该确认消息框:

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("file:///E:/confirm.html")

#点击页面的:show a confirm box
driver.find_element_by_xpath('/html/body/input').click()
#driver对象切换到confirm提示框
aaa = driver.switch_to.alert
#点击确认消息框的确定按钮或者取消按钮
# aaa.accept()
aaa.dismiss()
time.sleep(5)

#点击后续弹出的alert窗口的确定按钮
aaa.accept()
time.sleep(5)

#退出浏览器对象
driver.quit()
三、提示消息框prompt
提示消息框提供了一个文本字段,用户可以在此字段输入一个答案来响应您的提示。该消息框有一个“确定”按钮和一个“取消”按钮。
案例:复制下面html代码,保存在本地的文本文件中,并将文件重命名为:prompt.html,文件保存在:e:\prompt.html
<html>
<head>
<script type="text/javascript">
function disp_prompt()
  {
  var name=prompt("请输入您的名字","Bill Gates")
  if (name!=null && name!="")
    {
    document.write("你好," + name + "!今天过得好吗?")
    }
  }
</script>
</head>
<body>

<input type="button" onclick="disp_prompt()" value="显示一个提示框" />

</body>
</html>

使用chrome浏览器打开该prompt.html文件,显示出下面的提示消息框

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("file:///E:/prompt.html")

#点击页面的按钮:先是一个提示框
driver.find_element_by_xpath('/html/body/input').click()
#driver对象切换到prompt提示框
aaa = driver.switch_to.alert
#使用提示消息框的send_keys()方法
aaa.send_keys("捉虫布道人")
time.sleep(5)
#使用提示消息框的确认accept()方法及取消dismiss()方法
aaa.accept()
# aaa.dismiss()
time.sleep(3)
driver.quit()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值