前言

不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert。先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决。

alert\confirm\prompt弹出框操作主要方法有:

text() :获取文本值

accept() :点击"确认"

dismiss() :点击"取消"或者叉掉对话框

send_keys() :输入文本值 --仅限于prompt,在alert和confirm上没有输入框

一、认识alert\confirm\prompt

1.如下图,从上到下依次为alert\confirm\prompt,先认清楚长什么样子,以后遇到了就知道如何操作了。

2.html源码如下(有兴趣的可以copy出来,复制到txt文本里,后缀改成html就可以了,然后用浏览器打开)

<html>

<head>

<title>Alert</title>

</head>

<body>

<input id = "alert" value = "alert" type = "button" onclick = "alert('您关注了yoyoketang吗?');"/>

<input id = "confirm" value = "confirm" type = "button" onclick = "confirm('确定关注微信公众号:yoyoketang?');"/>

<input
id = "prompt" value = "prompt" type = "button" onclick = "var name =
prompt('请输入微信公众号:','yoyoketang'); document.write(name) "/>

</body>

</html>

二、alert操作

1.先用switch_to_alert()方法切换到alert弹出框上

2.可以用text()方法获取弹出的文本 信息

3.accept()点击确认按钮

4.dismiss()相当于点右上角x,取消弹出框

(url的路径,直接复制浏览器打开的路径)

三、confirm操作

1.先用switch_to_alert()方法切换到alert弹出框上

2.可以用text()方法获取弹出的文本 信息

3.accept()点击确认按钮

4.dismiss()相当于点取消按钮或点右上角x,取消弹出框

(url的路径,直接复制浏览器打开的路径)

四、prompt操作

1.先用switch_to_alert()方法切换到alert弹出框上

2.可以用text()方法获取弹出的文本 信息

3.accept()点击确认按钮

4.dismiss()相当于点右上角x,取消弹出框

5.send_keys()这里多个输入框,可以用send_keys()方法输入文本内容

(url的路径,直接复制浏览器打开的路径)​

五、select遇到的坑

1.在操作百度设置里面,点击“保存设置”按钮时,alert弹出框没有弹出来。(Ie浏览器是可以的)

2.分析原因:经过慢慢调试后发现,在点击"保存设置"按钮时,由于前面的select操作后,失去了焦点

3.解决办法:在select操作后,做个click()点击操作

s = driver.find_element_by_id("nr")

Select(s).select_by_visible_text("每页显示20条")

time.sleep(3)

s.click()

六、最终代码

# coding:utf-8

from selenium import webdriver

from selenium.webdriver.common.action_chains import ActionChains

from selenium.webdriver.support.select import Select

import time

driver = webdriver.Firefox()

url = "https://www.baidu.com"

driver.get(url)

driver.implicitly_wait(20)

# 鼠标移动到“设置”按钮

mouse = driver.find_element_by_link_text("设置")

ActionChains(driver).move_to_element(mouse).perform()

driver.find_element_by_link_text("搜索设置").click()

# 通过text:select_by_visible_text()

s = driver.find_element_by_id("nr")

Select(s).select_by_visible_text("每页显示20条")

time.sleep(3)

s.click()

driver.find_element_by_link_text("保存设置").click()

time.sleep(5)

# 获取alert弹框

t = driver.switch_to_alert()

print t.text

t.accept()

这一篇应该比较简单,Alert相关的内容比较少,虽然有一些页面也有弹窗,但不是所有的弹窗都叫alert。alert的弹出
框界面比较简洁,是调用的系统弹窗警告框,没花里胡哨的东西,还是很容易区分的。

在学习过程中有遇到疑问的,可以加selenium(python+java) QQ群交流:232607095

Selenium2+python自动化16-alert\confirm\prompt的更多相关文章

  1. Python+Selenium学习--alert/confirm/prompt 处理

    场景 webdriver 中处理JavaScript 所生成的alert.confirm 以及prompt 是很简单的.具体思路是使用switch_to.alert()方法定位到alert/confi ...

  2. Selenium2+python自动化13-Alert

    不是所有的弹出框都叫alert,在使用alert方法前,先要识别出它到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决.alert\confirm\prompt弹出框 ...

  3. Selenium2+python自动化16-alert\confirm\prompt【转载】

    前言 不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决. alert\confirm\prompt ...

  4. selenium python (十一)alert/confirm/prompt的处理(js中的弹出框)

    webdriver中处理js所生成的alert.confirm以及prompt,采用switch_to_alert()方法定位到alert/confirm/prompt.然后使用text/accept ...

  5. Python脚本控制的WebDriver 常用操作 <二十二> 处理alert / confirm / prompt

    测试用例场景 webdriver中处理原生的js alert confirm 以及prompt是很简单的.具体思路是使用switch_to.alert()方法定位到alert/confirm/prom ...

  6. 转:python webdriver API 之alert/confirm/prompt 处理

    webdriver 中处理 JavaScript 所生成的 alert.confirm 以及 prompt 是很简单的.具体思路是使用switch_to.alert()方法定位到 alert/conf ...

  7. Selenium2学习(十二)-- alert\confirm\prompt

    前言 不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决. alert\confirm\prompt ...

  8. Selenium2+python自动化64-100(大结局)[已出书]

    前言 小编曾经说过要写100篇关于selenium的博客文章,前面的64篇已经免费放到博客园供小伙伴们学习,后面的内容就不放出来了,高阶内容直接更新到百度阅读了. 一.百度阅读地址: 1.本书是在线阅 ...

  9. Selenium2+python自动化47-判断弹出框存在(alert_is_present)

    前言 系统弹窗这个是很常见的场景,有时候它不弹出来去操作的话,会抛异常.那么又不知道它啥时候会出来,那么久需要去判断弹窗是否弹出了. 本篇接着Selenium2+python自动化42-判断元素(ex ...

随机推荐

  1. unity, itween, closed path

  2. testNG设置测试的执行顺序

    在java类中,设置Test的执行顺序可以使用priority,或者enabled等属性.但是在testng.xml中,需要设置它的 preserve-order="true" 另 ...

  3. StackOverflow程序员推荐的几本书籍

    1. <代码大全>史蒂夫·迈克康奈尔 推荐数:1684 “优秀的编程实践的百科全书,<代码大全>注重个人技术,其中所有东西加起来,就是我们本能所说的“编写整洁的代码”.这本书有 ...

  4. -include和sinclude 作用

    -include和sinclude   如果有文件没有找到的话,make会生成一条警告信息,但不会马上出现致命错误.它 会继续载入其它的文件,一旦完成makefile的读取,make会再重试这些没有找 ...

  5. ADF_Database Develop系列3_设计数据库表之Reconcile Database/Reverse Objects

    2013-05-01 Created By BaoXinjian

  6. 预处理语句--#define、#error和#warning

    1.#define语句 我们经常会这样定义一些宏:       #define BLOCK 8192 但这样的宏却不能在字符串中展开,如:    printf("The BLOCK numb ...

  7. 图的存储,搜索,遍历,广度优先算法和深度优先算法,最小生成树-Java实现

    1)用邻接矩阵方式进行图的存储.如果一个图有n个节点,则可以用n*n的二维数组来存储图中的各个节点关系. 对上面图中各个节点分别编号,ABCDEF分别设置为012345.那么AB AC AD 关系可以 ...

  8. Redis 新特性---pipeline(管道)

    转载自http://weipengfei.blog.51cto.com/1511707/1215042 Redis本身是一个cs模式的tcp server, client可以通过一个socket连续发 ...

  9. Git服务器、http协议及XCode

    本来费了老鼻子牛劲搭好了SVN,可以通过web进行访问,也弄好了eclipse和XCode,结果几个开发的同事说要上git,悲了个催,又开始折腾git. 因为公司只有一个公网的http出口,因此开始了 ...

  10. Centos中的Docker 配置:将loop-lvm改为derict-lvm

    重新装了个虚拟机,回顾一下最近三天的工作: Centos 查看版本 cat /etc/redhat-release yum -y upgrade 升级所有包,不改变软件设置和系统设置,系统版本升级,内 ...