Python + Selenium(十八)弹出框

在 JavaScript 中可以创建三种消息框。这些消息框起到提示信息、确认操作、输入文本等操作。

比如,经常我们会某些内容未输入,弹出一个提示框,告知你未输入完整;或者在操作页面的过程中,有部分重要或危险的操作(删除)会弹出一个框让你确认;亦或者提示你需要强制输入某些内容。

这些由 JavaScript 生成的消息框,都有一个共有的特点:模态的。也就是你不处理这些消息框,将无法操作页面。对于 Selenium 也是同样的,有提示框存在将无法查找和操作页面元素。因此这些弹出消息框必须被处理。

消息框的形式有三种:

1. alert: 警告框,只是一个提示信息,只有一个确定按钮,起提示用户的作用;

2.confirm: 确认框,确定和取消按钮会带来不同的结果。点击确定会执行操作,点击取消按钮会取消操作;

3.prompt: 带输入框的确认框,输入的数据会返回页面做处理,点确定和取消会得到不同的结果。

消息框一旦弹出,就脱离于当前页面了,对于脱离当前页面的操作就需要用到 switch_to 了。这次是switch_to.alert。跳转到输入框后,可以对其进行操作:

注意:每种消息框都是用switch_to.alert,没有 confirm、prompt 的写法。

1. text: 返回 alert/confirm/prompt 中的文本信息;

# 注意都是属性的用法,没有括号
driver.switch_to.alert.text

2. accept(): 接受现有的消息框,相当于点击确定按钮;

driver.switch_to.alert.accept()

3. dismiss(): 取消现有的消息框,相当于点击取消按钮;

driver.switch_to.alert.dismiss()

4. send_keys(value): 发送文本至消息框,主要针对第三种提示框。

# 注意,这里输入的文本不会体现在提示框中
# 当你点击确定后才会有反应
driver.switch_to.alert.send_keys("测试")
driver.switch_to.alert.accept()

上面的操作,大家可以通过下面的 HTML 练习一下。

下面是一个例子,大家可以拷贝 html 代码到文本文件中并保存为.html格式,然后用浏览器打开:

<html>
    <head>
        <!-- css 文件 -->
        <link rel="stylesheet" href="http://cdn.static.runoob.com/libs/foundation/5.5.3/css/foundation.min.css">
        <!-- jQuery 库 -->
        <script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
        <!-- JavaScript 文件 -->
        <script src="http://cdn.static.runoob.com/libs/foundation/5.5.3/js/foundation.min.js"></script>
        <!-- modernizr.js 文件 -->
        <script src="http://cdn.static.runoob.com/libs/foundation/5.5.3/js/vendor/modernizr.js"></script>
        <title>认识alert/confirm/prompt</title>
    </head>
    <body>
        <div style="width:330px;">
            <ul class="button-group radius">
                <li><input id="alert" value="alert" type="button" class="button success" onclick = "show_alert()"/></li>
                <li><input id = "confirm" value = "confirm" type = "button" class="button info" onclick = "show_confirm()"/></li>
                <li><input id = "prompt" value = "prompt" type = "button" class="button warning" onclick = "show_prompt()"/></li>
            </ul>
            <div class="panel callout">
                <h3>操作结果</h3>
                <p id='opt'>等待操作...</p>
            </div>
        </div>


        <script type="text/javascript">
            function show_alert(){
                alert('这是一个alert警告框!');
            }
            function show_confirm(){
                if(confirm('这是一个confirm确认框!')){
                    document.getElementById('opt').innerHTML='confirm:你选择了确认!';
                }else{
                    document.getElementById('opt').innerHTML='confirm:你选择了取消!';
                }
            }
            function show_prompt(){
                var str = prompt('请输入:','这是可输入的prompt!'); 
                if(str == null){
                    document.getElementById('opt').innerHTML='prompot:' + '你选择了取消!';
                }else{
                    document.getElementById('opt').innerHTML='prompot:' + str;		
                }
            }
        </script>
    </body>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值