selenium自动化之处理浏览器警告弹窗

本文详细介绍了如何使用Selenium自动化处理浏览器中的警告弹窗,包括有确定取消按钮的弹窗、仅有确定按钮的弹窗及带有输入对话框的弹窗的处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

selenium自动化之处理浏览器警告弹窗
2019.01.06 23:18 531浏览

有的网站会弹出类似如下图的警告弹窗,你会发现这种弹窗在html源码中怎么也定位不到,接下来将介绍这种弹窗的处理方式。

在这里插入图片描述

其实这种弹窗是不属于html的元素的,他是属于浏览器自带的弹窗,所以用定位元素的方法是定位不了的。

浏览器的警告弹窗一共有三种:

第一种:(有【确定】【取消】按钮的)

在这里插入图片描述

解决方案:

1.先使用 driver.switch_to.alert 切换到警告弹窗上(注意,有时候切换前需要加个等待)

2.text方法可以获取到弹窗上的文本

3.accept()方法相当于点击确定按钮

4.dismiss()方法相当于点击取消按钮

代码:

time.sleep(2)
  a = driver.switch_to.alert # 新方法,切换alert
  # a = driver.switch_to_alert() # 老方法,切换alert
  print(a.text) # 获取弹窗上的文本
  a.accept() # 确认,相当于点击[确定]按钮
  # a.dismiss() # 取消,相当于点击[取消]按钮

结果:

输出弹窗上的文本内容

在这里插入图片描述

第二种:(只有【确定】按钮的)

在这里插入图片描述

解决方案(其实这种和第一种弹窗的处理方法一样的):

1.先使用 driver.switch_to.alert 切换到警告弹窗上(注意,有时候切换前需要加个等待)

2.text方法可以获取到弹窗上的文本

3.accept()方法相当于点击确定按钮

4.dismiss()方法相当于关闭弹窗

代码:

time.sleep(2)
  a = driver.switch_to.alert # 新方法,切换alert
  # a = driver.switch_to_alert() # 老方法,切换alert
  print(a.text) # 获取弹窗上的文本
  a.accept() # 确认,相当于点击[确定]按钮
  # a.dismiss() # 取消,相当于点击关闭弹窗

第三种:(有输入对话框的)

在这里插入图片描述

解决方案(其实这种弹窗处理只是多加了一个方法):

1.先使用 driver.switch_to.alert 切换到警告弹窗上(注意,有时候切换前需要加个等待)

2.accept()方法相当于点击确定按钮

3.dismiss()方法相当于关闭弹窗

4.send_keys()相当于在弹窗的输入框中输入文本

代码:

time.sleep(2)
  a = driver.switch_to.alert # 新方法,切换alert
  # a = driver.switch_to_alert() # 老方法,切换alert
  a.send_keys(‘Kevin-liutianping’) # 在弹窗上的输入框中输入文本内容
  a.accept() # 确认,相当于点击[确定]按钮
  # a.dismiss() # 取消,相当于点击[取消]按钮

转载请注明出处 作者:Kevin-liutianping

博客连接:https://www.cnblogs.com/kevin-liutianping/

### 使用 Selenium 实现自动化登录弹窗功能 在使用 Selenium 进行 Web 自动化测试时,处理登录弹窗是一个常见需求。以下是关于如何通过 Selenium 来实现这一功能的具体方法。 #### 1. **理解弹窗类型** Selenium 中的弹窗主要分为三种:JavaScript 警告框 (`alert`)、确认框 (`confirm`) 和提示框 (`prompt`)[^2]。对于登录弹窗而言,通常涉及的是 HTML 表单或者 JavaScript 提示框的形式。如果弹窗是由 JavaScript `window.prompt()` 方法触发,则可以通过 `switch_to.alert` 接口来发送用户名和密码并提交。 #### 2. **代码实现** 以下是一段完整的 Python 示例代码,展示如何使用 Selenium 处理基于 JavaScript 的登录弹窗: ```python from selenium import webdriver from selenium.webdriver.common.by import By import time # 初始化 WebDriver (这里以 Edge 浏览器为例) driver = webdriver.Edge() try: # 打开目标页面 driver.get("https://example.com/login_popup") # 模拟点击按钮触发弹窗 login_button = driver.find_element(By.ID, "loginButton") login_button.click() # 切换到 alert 弹窗 alert = driver.switch_to.alert # 输入用户名 alert.send_keys("your_username") # 假设此弹窗仅支持输入用户名 alert.accept() # 点击 OK 或 Enter 键继续下一步 # 如果有二次验证或其他逻辑可重复上述过程 time.sleep(3) finally: # 关闭浏览器实例 driver.quit() ``` 这段代码展示了如何针对简单的 JavaScript 登录弹窗进行操作[^3]。需要注意的是,在实际项目中可能还需要引入显式等待机制以确保弹窗能够完全加载后再执行后续动作。 #### 3. **复杂场景下的解决方案** 当面对更复杂的登录流程(如多窗口跳转),则需结合窗口句柄管理技术完成整个任务流控制[^4]。例如某些网站会在新的标签页里呈现验证码图片供用户识别填写;此时就需要先获取当前所有可用窗口列表再逐一判断哪个才是目标界面。 下面是另一个例子说明怎样切换至新开的子窗口做进一步交互: ```python main_window_handle = None while not main_window_handle: main_window_handle = driver.current_window_handle for handle in driver.window_handles: if handle != main_window_handle: driver.switch_to.window(handle) break # 继续在此新窗口内的表单项上填入资料... email_field = driver.find_element(By.NAME,'email') password_field = driver.find_element(By.NAME,'password') if email_field and password_field : email_field.send_keys('test@example.org') password_field.send_keys('secure_password_123!') submit_btn=driver.find_element(By.CSS_SELECTOR,'#submitButton').click(); time.sleep(5) # 返回原窗口关闭其他多余选项卡等清理工作省略... driver.close(); driver.switch_to.window(main_window_handle); ``` 以上脚本片段解释了从主窗口转移到次级窗口的过程以及在那里完成必要的身份认证步骤之后又回到初始状态的方法。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值