前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Selenium处理JavaScript对话框

Selenium处理JavaScript对话框

作者头像
Altumn
发布2019-10-20 18:35:26
1.6K0
发布2019-10-20 18:35:26
举报

写在前面

在日常的UI自动化测试中,经常会遇到网页弹出警告框,WebDriver可以轻松处理JavaScript对话框。 JavaScript弹出的对话框常见的有三种:alert、confirm、prompt。接下来分别针对以上类型的对话框进行处理操作。

Alert警告框

Alert是一个警告框,只有一个按钮“确定”并且点击确定无返回值,警告框经常用于确保用户可以得到一些提示信息。当警告框出现后,需要点击确定按钮才能继续进行操作。

为了更直观的演示处理效果,制作了一个html。Alert警告框传送门(复制链接浏览器打开):

https://www.testclass.cn/test_html/alert.html

接下来针对该Alert警告框Selenium进行操作;如下所示:

代码语言:javascript
复制
#coding=utf-8
#www.testclass.cn
#Altumn
import time
from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://www.testclass.cn/test_html/alert.html")alert = driver.switch_to.alert
#获取Alert的Text值;
print(alert.text)
driver.switch_to.alert.accept()
time.sleep(3)alert = driver.switch_to.alert
#获取Alert的Text值;
print(alert.text)

#定位到Alert并且接受
Alertdriver.switch_to.alert.accept()
driver.quit()

执行结果,如下所示:

Confirm消息确认框

Confirm是一个确认框,提示内容包含确定和取消两个按钮,返回true或false。确认框用于使用户可以验证或者接受某些信息。当确认框出现后,用户需要点击确定或者取消按钮才能继续进行操作。如果用户点击确认,那么返回值为true。如果用户点击取消,那么返回值为 false。界面显示如下:

为了更直观的演示处理效果,制作了一个html。Confirm提示框传送门(复制链接浏览器打开):

https://www.testclass.cn/test_html/Confirm.html

接下来针对该Confirm提示框Selenium进行接受操作(点击确定,返回true);如下所示:

代码语言:javascript
复制
#coding=utf-8
#www.testclass.cn
#Altumn
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.testclass.cn/test_html/Confirm.html')

#点击界面按钮,弹出提示;
driver.find_element_by_name("button").click()
time.sleep(3)alert = driver.switch_to.alert
#获取Alert的Text值;
print(alert.text)

#定位到Alert并且接受Alert(点击确定,返回true)
driver.switch_to.alert.accept()time.sleep(3)
driver.quit()

执行结果如下所示:

接下来针对该Confirm提示框Selenium进行取消操作(点击取消,返回false);如下所示:

代码语言:javascript
复制
#coding=utf-8
#www.testclass.cn
#Altumn
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.testclass.cn/test_html/Confirm.html')

#点击界面按钮,弹出提示;
driver.find_element_by_name("button").click()
time.sleep(3)alert = driver.switch_to.alert
#获取Alert的Text值;
print(alert.text)
#定位到Alert并且取消Alert(点击取消,返回false)

driver.switch_to.alert.dismiss()time.sleep(3)
driver.quit()

执行结果如下所示:

Prompt提示输入框

Prompt是一个提示框,输入信息后会返回输入的消息,或者提示框经常用于提示用户在进入页面前输入某个值。当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操作。如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。界面显示如下图所示:

为了更直观的演示处理效果,制作了一个html。Prompt消息提示框传送门(复制链接浏览器打开):

https://www.testclass.cn/test_html/prompt.html

接下来针对该Prompt消息提示框Selenium进行操作;如下所示:

代码语言:javascript
复制
#coding=utf-8
#www.testclass.cn
#Altumn
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.testclass.cn/test_html/prompt.html')alert = driver.switch_to.alert

#获取Alert的Text值;
print(alert.text)

#等待1秒
time.sleep(1)

#在弹出框内输入www.testclass.cn,网页会自动返回输入的内容;
alert.send_keys("www.testclass.cn")

#等待1秒
time.sleep(1)

#定位到Alert并且接受Alert
driver.switch_to.alert.accept()

#等待1秒
time.sleep(1)

#定位到Alert并且接受Alert
driver.switch_to.alert.accept()time.sleep(1)
alert = driver.switch_to.alert

#获取Alert的Text值;
print(alert.text)

#在弹出框内输入是;网页会自动返回输入的内容;
alert.send_keys("是")

#定位到Alert并且接受Alert
driver.switch_to.alert.accept()driver.quit()

执行结果如下所示:

总结一下

webdriver针对JavaScript警告框的处理非常简单。处理思路是:

  1. 首先使用switch_to.alert方法定位到 alert/confirm/prompt;
  2. 然后使用以下方法进行继续操作:

text/accept/dismiss/send_keys。

text:返回 alert/confirm/prompt 中的文本信息。

accept():接受现有警告框(确定)。

dismiss():取消现有警告框(取消)。

send_keys:发送文本至警告框。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试testclass 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档