首先,将下面html代码保存到一个文件中

后续的代码小案例都是访问此html的

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>警告框处理</title>
  6. <script type="text/javascript">
  7. function duihua() {
  8. alert("这个窗口是对话框!");
  9. print('你点击了确认');
  10. }
  11. function queren() {
  12. var se = confirm("确认框!");
  13. if (se == true) {
  14. print('你点击了确认1');
  15. } else {
  16. print('你点击了取消1');
  17. }
  18. }
  19. function tishi() {
  20. var se = prompt("请输入您的反馈意见", "测试")
  21. if (se != null) {
  22. print('你点击了确认2');
  23. } else {
  24. print('你点击了取消2');
  25. }
  26. // if (t != null && t != "") {
  27. // document.write("刷新回到初始界面")
  28. // }
  29. }
  30. function print(text) {
  31. var dom = document.createElement('div')
  32. dom.innerText = text
  33. document.getElementsByTagName('body')[0].appendChild(dom)
  34. }
  35. </script>
  36. </head>
  37. <body>
  38. <input id="bu1" type="button" onclick="duihua()" value="点击显示对话框"/>
  39. <br>
  40. <br>
  41. <input id="bu2" type="button" onclick="queren()" value="点击显示确认框"/>
  42. <br>
  43. <br>
  44. <input id="bu3" type="button" onclick="tishi()" value="点击显示提示框"/>
  45. </body>
  46. </html>

alert窗口的类型

  • 警告框
  • 确认框
  • 对话框

    警告框

    Selenium系列(9) - 针对alert窗口的处理(警告框、确认框、对话框)和源码解读 - 图3

确认框

Selenium系列(9) - 针对alert窗口的处理(警告框、确认框、对话框)和源码解读 - 图4

对话框

Selenium系列(9) - 针对alert窗口的处理(警告框、确认框、对话框)和源码解读 - 图5

操作alert窗口

  • 切换至alert窗口
  • 获取alert窗口的值
  • 确定
  • 取消
  • 输入值

警告框的栗子

  1. # !/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. __title__ =
  5. __Time__ = 2020/3/25 17:52
  6. __Author__ = 小菠萝测试笔记
  7. __Blog__ = https://www.cnblogs.com/poloyy/
  8. """
  9. from selenium import webdriver
  10. driver = webdriver.Chrome("../resources/chromedriver.exe")
  11. # html文件路径需要自己替换哦
  12. driver.get("file:///C:/警告框.html")
  13. driver.maximize_window()
  14. # 警告框
  15. alert1 = driver.find_element_by_id("bu1")
  16. # 先点击,得先弹出警告框
  17. alert1.click()
  18. # 切换至警告框
  19. alert1 = driver.switch_to.alert
  20. # 获取alert窗口的值
  21. print(alert1.text)
  22. # 点击 确定
  23. alert1.accept()

确认框的栗子

  1. alert2 = driver.find_element_by_id("bu2")
  2. alert2.click()
  3. # 切换至对话框
  4. alert2_ = driver.switch_to.alert
  5. # 获取窗口值
  6. print(alert2_.text)
  7. # 点击 取消
  8. alert2_.dismiss()
  9. # 点击 确认
  10. # alert2_.accept()

对话框的栗子

  1. alert3 = driver.find_element_by_id("bu3")
  2. alert3.click()
  3. # 切换至对话框
  4. alert3_ = driver.switch_to.alert
  5. # 获取窗口值
  6. print(alert3_.text)
  7. # 输入值到对话框中
  8. alert3_.send_keys("输入对话框")
  9. # 点击 确认
  10. alert2_.accept()

switch_to.alert源码解读

  1. @property
  2. def alert(self):
  3. """
  4. Switches focus to an alert on the page.
  5. :Usage:
  6. alert = driver.switch_to.alert
  7. """
  8. alert = Alert(self._driver)
  9. alert.text
  10. return alert

知识点

  • alert是一个属性,不是一个方法
  • 最终返回一个 Alert 实例,所以我们需要有变量去接住它,后续通过这个变量去操作alert窗口
  • 操作alert窗口的方法都 Alert 的方法

转载: https://www.cnblogs.com/poloyy/p/12600700.html