Python利用Selenium实现弹出框的处理

这篇具有很好参考价值的文章主要介绍了Python利用Selenium实现弹出框的处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

现如今经常出现在网页上的基于 JavaScript 实现的弹出框有三种,分别是 alert、confirm、prompt 。该章节主要是学习如何利用 selenium 处理这三种弹出框。奥利给,冲!

JavaScript三种弹出对话框的简单介绍

JavaScript的三种对话框是通过调用 "window对象" 的三个方法 "alert()"、"confirm()" 、"prompt()" 来获得,我们可以利用这些对话框来完成 "js" 的输入和输出,实现与用户进行交互的js代码。

下面就来简单的了解一下这三种对话框吧。

alert() - 警告框

alert 是一个警告框,表现为直接弹出一个提示窗,该提示窗只有一个按钮确定按钮,点击 确定 按钮后无返回值;alert 警告框经常被用于确保用户可以得到某些信息。当警告框出现后,用户需要点击确定按钮才能继续进行操作。语法:alert("文本") 。

alert 警告框代码示例如下:

1

2

3

4

5

6

<html>

    <head>

        <title>html页面 - alert</title>

        <a id="tooltip" href="#" data-toggle="tooltip" title="This is alert" onclick="alert(this.title);">点击我,弹出 alert</a>

    </head>

</html>

Python利用Selenium实现弹出框的处理,python,selenium,软件测试,接口测试,自动化测试,测试工程师

confirm() - 确认框

confirm 是确认框,它有两个按钮,确定 与 取消 ,返回 true 或 false 。确认框用于让用户可以验证或者接受某些信息。当确认框出现后,用户需要点击确定或者取消按钮才能继续进行操作。如果用户点击确认,那么返回值为 true。如果用户点击取消,那么返回值为 false。 语法:confirm("文本")

confirm 确认框代码示例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<html>

    <head>

        <title>confirm</title>

    </head>

    <body>

执行 "选择" 后显示的结果

        <script language="JavaScript">

             

            if(confirm("准备好了么?")){

                alert("Go!");

            }

            else{

                alert("Hold on!");

            }

        </script>

    </body>

</html>

Python利用Selenium实现弹出框的处理,python,selenium,软件测试,接口测试,自动化测试,测试工程师

cprompt() - 提示框

prompt 是提示框,它会返回输入框输入的消息,或者其默认值;提示框经常用于提示用户在进入页面前输入某个值。当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵。如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。语法:prompt("文本","默认值")

prompt 提示框代码示例如下:

1

2

3

4

5

6

7

8

9

<html>

  <head>

  </head>

  <body>

    <script language='JavaScript' type="text/javascript" >

      var aa= prompt("What's your name?","Husky");document.write("Welcome to my world, "+aa+"<br>")

    </script>

  </body>

</html>

Python利用Selenium实现弹出框的处理,python,selenium,软件测试,接口测试,自动化测试,测试工程师 

以上就是比较常用的三种弹出层的原生 JavaScript 组件。

selenium 处理弹出对话框的常用方法

常用方法如下:

  • text:返回 alert、confirm、prompt 里面的文字信息
  • accept:接受
  • dismiss:取消
  • send_keys:向 prompt 里面输入文字

selenium 处理 alert() 弹窗

本地 alert.html 弹窗页面如下:

Python利用Selenium实现弹出框的处理,python,selenium,软件测试,接口测试,自动化测试,测试工程师

代码示例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

# coding:utf-8

from time import sleep

from selenium import webdriver

driver = webdriver.Chrome()     # 启动 Chrome浏览器的 driver

driver.maximize_window()        # Chrome 浏览器最大化

driver.get('file:///Users/workspace/WEB_TEST_HTML/alert.html')   # 打开本地的 "alert.html" 文件

sleep(1)

driver.find_element_by_id('tooltip').click()          # 点击页面 id='tooltip' 的元素(会弹出alert)

sleep(1)

alert = driver.switch_to.alert      # 选择 alert

print(alert.text)                   # 打印输出 alert 的内容

alert.accept()                      # 针对 alert 执行 accept(接受)方法

sleep(2)

driver.quit()

运行结果如下:

Python利用Selenium实现弹出框的处理,python,selenium,软件测试,接口测试,自动化测试,测试工程师

selenium 处理 confirm() 弹窗

本地 confirm.html 弹窗页面如下:

Python利用Selenium实现弹出框的处理,python,selenium,软件测试,接口测试,自动化测试,测试工程师

 

代码示例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

# coding:utf-8

from time import sleep

from selenium import webdriver

driver = webdriver.Chrome()     # 启动 Chrome浏览器的 driver

driver.maximize_window()        # Chrome 浏览器最大化

driver.get('file:///Users/workspace/WEB_TEST_HTML/confirm.html')   # 打开本地的 "alert.html" 文件

sleep(1)

confirm = driver.switch_to.alert        # 不管是 alert 还是 confirm、cprompt ,"switch_to" 的方式是一样的。

print(confirm.text)    # 打印输出 "confirm" 的内容

sleep(1)

confirm.dismiss()      # 针对 confirm 执行 dismiss(取消)方法

sleep(1)

alert = driver.switch_to.alert      # 选择 confirm 执行 accept(接受)方法后的 alert

print(alert.text)      # 打印输出 alert 的内容

sleep(1)

alert.accept()         # 针对 alert 执行 accept(接受)方法

sleep(1)

driver.quit()

运行结果如下:

Python利用Selenium实现弹出框的处理,python,selenium,软件测试,接口测试,自动化测试,测试工程师

上文的脚本中,我们通过 switch_to 的方法选择 alert 略显得麻烦一些,能不能直接通过 confirm 把它当成一个来处理呢?尝试一下看看…

代码示例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

# coding:utf-8

from time import sleep

from selenium import webdriver

driver = webdriver.Chrome()     # 启动 Chrome浏览器的 driver

driver.maximize_window()        # Chrome 浏览器最大化

driver.get('file:///Users/workspace/WEB_TEST_HTML/confirm.html')   # 打开本地的 "alert.html" 文件

sleep(1)

confirm = driver.switch_to.alert        # 不管是 alert 还是 confirm、cprompt ,"switch_to" 的方式是一样的。

print(confirm.text)    # 打印输出 "confirm" 的内容

sleep(1)

confirm.dismiss()      # 针对 confirm 执行 dismiss(取消)方法

sleep(1)

print(confirm.text)      # 打印输出 alert 的内容

sleep(1)

confirm.accept()         # 针对 confirm 执行 accept(接受)方法

sleep(1)

driver.quit()

运行结果如下:

Python利用Selenium实现弹出框的处理,python,selenium,软件测试,接口测试,自动化测试,测试工程师

从这里我们可以发现,不管弹出多少个 alert ,都可以使用同一个 switch_to 的结果一起来做后续的操作,不需要不断的去 switch_to 。因为它是一个系统组件,不管它是什么形态,都可以这样去支持。

selenium 处理 prompt() 弹窗

OK,接下来还剩下左后一个 弹窗组件 - prompt(),页面如下,有一个输入框,两个按钮,可以选择确定或取消。

Python利用Selenium实现弹出框的处理,python,selenium,软件测试,接口测试,自动化测试,测试工程师

代码示例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

# coding:utf-8

from time import sleep

from selenium import webdriver

driver = webdriver.Chrome()     # 启动 Chrome浏览器的 driver

driver.maximize_window()        # Chrome 浏览器最大化

driver.get('file:///Users/workspace/WEB_TEST_HTML/prompt.html')   # 打开本地的 "alert.html" 文件

sleep(1)

prompt = driver.switch_to.alert

print(prompt.text)

sleep(1)

prompt.send_keys('Husky I love U')      # "prompt.html" 文件默认输入框里传入的是 "Husky" ,这里我们传入 "Husky I love U"

prompt.accept()

sleep(1)

driver.quit()

运行结果如下:

Python利用Selenium实现弹出框的处理,python,selenium,软件测试,接口测试,自动化测试,测试工程师

从上面的动图中我们可以看到打印输出的内容并没有我们输入的内容,与之前文章的 send_keys 不一样,这是因为它是 JavaScript 原生的东西。既然是原生的组件,我们是看不到它的输入过程的,只能是通过 webdriver 来控制它的底层来改变输入的元素内容。所以虽然输入正确,返回也正确,但是在过程中是看不出来的。

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

Python利用Selenium实现弹出框的处理,python,selenium,软件测试,接口测试,自动化测试,测试工程师

Python利用Selenium实现弹出框的处理,python,selenium,软件测试,接口测试,自动化测试,测试工程师文章来源地址https://www.toymoban.com/news/detail-788575.html

到了这里,关于Python利用Selenium实现弹出框的处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VUE实现弹出框 点击空白页弹框消失

    可以在Vue中实现弹出框然后通过点击空白页面来让弹窗隐藏。具体实现如下: 创建弹出框组件 在Vue中创建一个弹出框组件,用来呈现弹出框的内容和样式。该组件应该接受两个 props,一个是 show,表示弹出框是否显示,另一个是 onClose,表示弹出框的关闭函数。 创建父组件

    2024年02月15日
    浏览(43)
  • Vue3 + Element UI 实现文件上传弹出框

    Vue3 + Element UI 实现文件上传 实现如下: 1.首页添加按钮点击弹出文件框 给dialog设置传参 展示对话框,设置 页面部分代码如下: 语法部分代码如下: 2.弹出框 页面部分代码如下: 语法部分代码如下 上述实现弹出框上传文件事件,当文件上传后需要更新文件管理展示页面,

    2024年02月11日
    浏览(60)
  • python通过selenium获取输入框的文本值爬取编辑框内容

    以百度首页的输入框为例,当输入‘你好‘后,html中的value的值会变成‘你好’ 运行代码得到以下效果

    2024年02月04日
    浏览(66)
  • Python利用Selenium实现自动化验证登录

    Python里面使用Selenium是一个很重要的自动化测试模块,我们可以用它写一个验证登录脚本,有了这个可以用来保存cookie信息等,下面是一个简单的demo:

    2024年02月15日
    浏览(43)
  • Vue3实现带点击外部关闭对应弹出框(可共用一个变量)

    首先,假设您在单文件组件(SFC)中使用了Vue3,并且有两个div元素分别通过`v-if`和`v-else`来切换显示一个带有`.elpopver`类的弹出组件。在这种情况下,每个弹出组件应当拥有独立的状态管理(例如:各自的isOpen变量)。为了实现点击外部关闭对应弹出框的功能,我们需要为每个组

    2024年01月18日
    浏览(102)
  • vue实现弹出框内嵌页面展示,添加tab切换展示实时加载

    最近做业务的时候,发现产品的原型图上有一个弹出框,上面包含了两个窗口要进行切换。 每个窗口都有分页列表展示、搜索、添加和删除,感觉就是两个完整的页面,如果全写在一个页面会很麻烦,还可能会出现一系列的问题,后期改起来比较麻烦,所以我就准备分开来写

    2024年02月16日
    浏览(36)
  • 利用Python+selenium技术,实现浏览器基本操作详解,代码有详细注释

    首先,需要安装selenium库和对应的浏览器驱动程序。以Chrome浏览器为例,可以使用以下命令安装selenium和chromedriver: 然后,需要下载对应版本的chromedriver,并将其添加到环境变量中。下载地址:http://chromedriver.storage.googleapis.com/index.html 不懂安装的,可以参考Chormedriver下载和安

    2024年02月09日
    浏览(52)
  • 利用Python中selenium库爬虫实现中国裁判文书网自动登录批量下载功能——最新版详细教程!!

    如果电脑上没有chrome浏览器或者当前chrome浏览器不是最新版,请先去chrome官网下载安装最新版chrome浏览器 https://www.google.cn/chrome/index.html 什么是ChromeDriver ChromeDriver是一种用于自动化和控制Google Chrome浏览器的工具。它是一个开源的项目,由Google维护,并提供给开发者使用。Ch

    2024年02月04日
    浏览(112)
  • python selenium 运行driver时一直弹出控制台CMD窗口怎么办

    1.python selenium 运行driver时一直弹出控制台CMD窗口,且不断报以下错误应该怎么处理? DevTools listening on ws://127.0.0.1:51303/devtools/browser/6d5f8d32-1e30-4749-ad54-17f08ee3a983 真的非常影响心情啊!!!  2.一直在网上搜索,按照大家所说的用以下代码还是不行: options = webdriver.ChromeOptions(

    2024年02月11日
    浏览(49)
  • 【微信小程序 uniapp】 ws-wx-privacy 微信隐私保护弹出框 隐私协议弹出框

    插件地址 (https://mp.weixin.qq.com/wxamp/basicprofile/index?token=1956320193lang=zh_CN) 4. 将调试基础库改为 3.0.0以上。 微信开发者工具-详情-本地设置-调试基础库 5. 页面 使用示例 仅有在指引中 声明所处理的用户信息 ,才可以调用平台提供的对应接口或组件。若未声明,对应接口或组件将

    2024年02月08日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包