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
    评论
Selenium WebDriver 是一种用于自动化Web应用程序测试的工具,它提供了一系列的API,用于操作浏览器来模拟用户的行为。它是基于Java编写的,因此可以使用Java语言来编写测试脚本。 Selenium WebDriver API 提供了一些常用方法来控制浏览器,如打开网址、在输入中输入文本、点击按钮等。这些方法可以让我们对页面上的元素进行定位和操作,以模拟用户在浏览器中的行为。 使用 Selenium WebDriver API,我们可以使用多种定位方式来找到页面上的元素,如通过id、name、class等属性进行定位,也可以通过XPath和CSS选择器来定位。定位到元素后,我们可以对其执行一系列的操作,如获取元素的文本、获取元素的属性、点击元素等。 Selenium WebDriver API 还提供了一些常用的操作方法,如切换窗口、切换到iframe、执行JavaScript等。这些方法可以帮助我们处理一些特殊的页面场景,如弹窗、嵌套的iframe等。 使用 Selenium WebDriver API,我们可以编写可维护和可扩展的测试脚本。通过使用Java语言的面向对象特性,我们可以将测试代码进行模块化,使其更加易读和易于维护。此外,Selenium WebDriver 还支持多种浏览器,如Chrome、Firefox等,我们可以轻松地在不同的浏览器上运行测试脚本。 总之,Selenium WebDriver API 提供了丰富的功能和强大的灵活性,使得我们可以编写高效和可靠的自动化测试脚本。无论是对于新手还是有经验的测试人员来说,掌握这些API是非常重要的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值