• Selenium基础 — 浏览器弹窗操作


    1、浏览器自带弹窗操作

    说明:
    webdriver中处理JavaScript所生成的alertconfirm以及prompt弹窗是很简单的。具体思路是使用switch_to.alert()方法定位到alert/confirm/prompt弹窗。然后使用text/accept/dismiss/send_keys方法按需进行操做。
    常用操作:

    操作说明
    text返回alert/confirm/prompt 中的文字信息。
    accept()点击弹窗中的确认按钮。(接收警告)
    dismiss()点击弹窗中的取消按钮,如果有的话。(弹窗中的)
    send_keys()输入文本到警告框,alert\confirm 没有对话框就不能用了,不然会报错。

    示例:
    页面代码片段:

    1. <!DOCTYPE html>
    2. <html lang="zh-cn">
    3. <head>
    4. <meta charset="UTF-8">
    5. <style type="text/css">
    6. button {
    7. padding: 8px;
    8. background: #f8f8f8;
    9. border-radius: 5px
    10. }
    11. </style>
    12. </head>
    13. <body>
    14. <button type="button_alert" value="alert" id="alert" onclick="al()">button_alert</button>
    15. <br>
    16. <button type="button_confirm" value="confirm" id="confirm" onclick="con()">button_confirm</button>
    17. <br>
    18. <button type="button_prompt" value="prompt" id="prompt" onclick="pro()">button_prompt</button>
    19. <br>
    20. <script>
    21. function al() {
    22. alert('你是一个懂得爱自己的人!')
    23. }
    24. function con() {
    25. confirm('你是一个懂得爱自己的人?')
    26. }
    27. function pro() {
    28. prompt('请对自己说一句话!')
    29. }
    30. </script>
    31. </body>
    32. </html>

    脚本代码:

    1. """
    2. 1.学习目标:
    3. 掌握浏览器自带弹窗的处理方法
    4. 2.语法(操作步骤):
    5. 2.1 操作触发弹窗的元素
    6. 2.2 获取弹窗(进入弹窗)
    7. alert = driver.switch_to.alert
    8. 2.3 操作弹窗
    9. alert.text 获取弹窗文本
    10. alert.accept() 点击弹窗确定按钮
    11. alert.dismiss() 点击弹窗取消按钮
    12. alert.send_keys("输入内容") 在弹窗中输入文字
    13. 3.需求
    14. 在页面中,操作浏览器自带弹窗
    15. """
    16. # 1.导入selenium
    17. from selenium import webdriver
    18. from time import sleep
    19. import os
    20. # 2.打开浏览器
    21. driver = webdriver.Firefox()
    22. # 3.打开页面
    23. url = "file:///" + os.path.abspath("./1.html")
    24. driver.get(url)
    25. sleep(2)
    26. # 4.处理浏览器自带弹窗
    27. # 4.1 触发弹窗的元素button_alert,完成text和accept()方法
    28. # 4.1.1 定位alert按钮,触发弹窗
    29. el = driver.find_element_by_id("alert")
    30. el.click()
    31. sleep(2)
    32. # 4.1.2 获取弹窗(进入弹窗)
    33. alert = driver.switch_to.alert
    34. # 4.1.3 获取弹窗文本值
    35. print("弹窗文本值:", alert.text)
    36. # 4.1.4 点击弹窗确定按钮
    37. alert.accept()
    38. sleep(2)
    39. # 4.2 触发弹窗的元素button_confirm,完成dismiss()方法
    40. # 4.2.1 定位confirm按钮,触发弹窗
    41. el = driver.find_element_by_id("confirm")
    42. el.click()
    43. sleep(2)
    44. # 4.2.2 获取弹窗(进入弹窗)
    45. confirm = driver.switch_to.alert
    46. # 4.2.3 获取弹窗文本值
    47. print("弹窗文本值:", confirm.text)
    48. # 4.2.4 点击弹窗取消按钮
    49. confirm.dismiss()
    50. sleep(2)
    51. # 4.3 触发弹窗的元素button_prompt,完成send_keys("输入内容")方法
    52. # 4.3.1 定位prompt按钮,触发弹窗
    53. el = driver.find_element_by_id("prompt")
    54. el.click()
    55. sleep(2)
    56. # 4.3.2 获取弹窗(进入弹窗)
    57. prompt = driver.switch_to.alert
    58. # 4.3.3 获取弹窗文本值
    59. print("弹窗文本值:", prompt.text)
    60. # 4.3.4 点击弹窗确定按钮
    61. prompt.send_keys("怎么显示不了")
    62. sleep(2)
    63. # 4.3.5 点击弹窗确定按钮
    64. prompt.accept()
    65. sleep(2)
    66. # 5.关闭浏览器
    67. driver.quit()

    注意:prompt弹窗输入框,Chrome不显示输入文本
    Python版本 3.7.7

    • Edge版本:18.18362,没有问题。
    • Firefox版本:76.0.1 (64 位),没有问题。
    • Chrome版本:74.0.3729.131(正式版本)32位,有问题。

    2、页面自定义弹窗操作

    由于alert弹窗不美观,现在大多数网站都会使用自定义弹窗,使用Selenium自带的方法就驾驭不了了,此时就要搬出JS方法来进行处理。
    需求:
    需求:去掉淘宝首页的自定义弹窗
    淘宝首页的自定义弹窗如下:

    提示:网页中弹出的对话框,也属于页面自定义弹窗,都可以用下面方式处理。
    实现方式:
    大家能看到,上图中的这种弹窗就是自定义弹窗的表现形式,处理这种弹窗可以利用HTMLDOMStyle对象中的一个display属性来处理,可以设置元素如何被显示。
    将display的值设置成none:此元素不会被显示,就可以去除这个弹窗了。
    注意:手动页面刷新之后还会出现弹窗。

    步骤如下:

    1. # JavaScript语法
    2. js = 'document.getElementById("div_company_mini").style.display="none";'
    3. # 使用Python执行JS语句
    4. driver.execute_script(js1)

    提示:
    document.getElementById()是JS获取元素的方式,在JS获取元素方式中,就只有ById()获取的是一个元素。
    其他获取元素的方式,都获取的是结果集,需要获取具体元素的时候,注意要使用索引。
    简单举例:

    1. 通过ID获取(getElementById)
    2. 通过name属性(getElementsByName)
    3. 通过标签名(getElementsByTagName)
    4. 通过类名(getElementsByClassName)


    示例:

    1. """
    2. 1.学习目标:
    3. 了解关闭web页面自定义弹窗
    4. 2.语法(操作步骤)
    5. 2.1 找到自定义弹窗的元素,
    6. 修改样式:tyle.display='none'
    7. display='none'表示不显示样式,目的是将弹窗隐藏
    8. 2.2 操作步骤
    9. js = document.getElementById("id属性值").style.display="none"
    10. 或者其他的JS获取元素方式
    11. driver.execute_script(js)
    12. 3.需求
    13. 隐藏页面自定义弹窗
    14. """
    15. # 1.导入selenium
    16. from selenium import webdriver
    17. from time import sleep
    18. # 2.打开浏览器
    19. driver = webdriver.Chrome()
    20. # 3.打开页面
    21. url = "https://www.taobao.com/"
    22. driver.get(url)
    23. sleep(5)
    24. # 4.关闭自定义弹窗
    25. js = 'document.querySelector("body > div.tbh-fixedtool.J_Module > div").style.display="none"'
    26. driver.execute_script(js)
    27. sleep(2)
    28. # 5.关闭浏览器
    29. driver.quit()

    最后我这里给你们分享一下我所积累和真理的文档和学习资料有需要是领取就可以了

    1、学习思路和方法

    这个大纲涵盖了目前市面上企业百分之99的技术,这个大纲很详细的写了你该学习什么内容,企业会用到什么内容。总共十个专题足够你学习

    2、想学习却无从下手,该如何学习?

    这里我准备了对应上面的每个知识点的学习资料、可以自学神器,已经项目练手。

    3、软件测试/自动化测试【全家桶装】学习中的工具、安装包、插件....

    4、有了安装包和学习资料,没有项目实战怎么办,我这里都已经准备好了往下看

    最后送上一句话:
    世界的模样取决于你凝视它的目光,自己的价值取决于你的追求和心态,一切美好的愿望,不在等待中拥有,而是在奋斗中争取。
    如果我的博客对你有帮助、如果你喜欢我的文章内容,请 “点赞” “评论” “收藏” 一键三连哦

  • 相关阅读:
    win11cf烟雾头怎么调?
    二叉树题目:二叉树的最近公共祖先
    基于Java+Spring+vue+element社区疫情服务平台设计和实现
    团队活动和社交交流能否增进同事之间的互动和理解?
    Pytorch:使用data_prefetcher提升数据读取速度【自动将训练数据移动到GPU】
    【LeetCode-中等】240. 搜索二维矩阵 II(详解)
    优化器简单概述
    信息化、数字化、智能化的区别到底是什么?这篇文章说清楚了!
    synchronized 的实现原理以及锁升级详解
    【SQL】Spark SQL 比较上下两条数据,多个字段多个条件,赋值一个结果字段成一个array,
  • 原文地址:https://blog.csdn.net/m0_59868866/article/details/127575541