当前位置: 首页 > news >正文

国外企业网站建设网站收录很高

国外企业网站建设,网站收录很高,注册公司实缴和认缴有什么区别,wordpress 做官网在 Selenium 中,alert 是浏览器的 JavaScript 弹窗(如 alert(), confirm(), prompt()),通常用于警告、确认操作或输入信息。Selenium 提供了 driver.switch_to.alert 来处理这些弹窗。 1. 获取 alert 对象 当页面弹出 alert 时&a…

在 Selenium 中,alert 是浏览器的 JavaScript 弹窗(如 alert(), confirm(), prompt()),通常用于警告、确认操作或输入信息。Selenium 提供了 driver.switch_to.alert 来处理这些弹窗。

 

 


1. 获取 alert 对象

当页面弹出 alert 时,你需要先切换到该 alert,然后才能对其进行操作:

alert = driver.switch_to.alert

2. 常见操作

(1)获取 alert 文本

获取弹窗的文本内容:

text = alert.text
print(text)

(2)接受 alert

点击 “确定” 按钮:

alert.accept()

(3)取消 alert

点击 “取消” 按钮(适用于确认弹窗和输入弹窗):

alert.dismiss()

(4)输入文本

适用于输入类型的弹窗:

alert.send_keys("Hello, Selenium!")
alert.accept()  # 发送文本后点击“确定”

3. 等待 alert 出现

有时候 alert 可能不会立刻出现,因此可以使用 显式等待 让 Selenium 等待弹窗:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 等待 `alert` 出现(最多 10 秒)
wait = WebDriverWait(driver, 10)
alert = wait.until(EC.alert_is_present())# 获取文本并接受
print(alert.text)
alert.accept()

(在这种时候它就自己切换了!不用再alert = driver.switch_to.alert)

等价于

如果不用 WebDriverWait,手动 switch_to.alert 需要自己检查 alert 是否存在:

from selenium.common.exceptions import NoAlertPresentException
import timetime.sleep(3)  # 先等待几秒,假设 `alert` 可能延迟出现try:alert = self.driver.switch_to.alert  # 手动切换到 `alert`print("弹窗内容:", alert.text)alert.accept()
except NoAlertPresentException:print("没有弹窗")

 

4. 常见 alert 相关异常

(1)NoAlertPresentException

selenium.common.exceptions.NoAlertPresentException: Message: no such alert

原因:试图操作 alert,但当前页面没有弹窗。

解决方案

  • 确保 alert 确实存在,可以先用 WebDriverWait 等待弹窗。
  • 使用 try-except 处理异常:
    try:alert = driver.switch_to.alertprint(alert.text)alert.accept()
    except NoAlertPresentException:print("没有弹窗")
    

2)UnexpectedAlertPresentException

selenium.common.exceptions.UnexpectedAlertPresentException

原因:执行某个 Selenium 操作时,页面突然弹出 alert,导致操作失败。

解决方案

  • 先处理 alert,然后再执行 Selenium 操作:
try:alert = driver.switch_to.alertalert.accept()  # 先处理弹窗
except NoAlertPresentException:pass  # 没有弹窗就继续执行# 继续执行 Selenium 操作
driver.find_element(By.CSS_SELECTOR, "#submit").click()

 处理 alert 关闭后仍然存在的问题

有些 alert 在关闭后,可能仍然会影响 Selenium 操作(比如 accept() 之后仍然报 alert 存在的错误)。

解决方案:执行 time.sleep(1) 或再次检查 alert 是否仍然存在

import timealert = WebDriverWait(self.driver, 5).until(EC.alert_is_present())
alert.accept()# 等待 alert 彻底消失
time.sleep(1)try:self.driver.switch_to.alert  # 这里如果 alert 还在会报错print("alert 仍然存在")
except NoAlertPresentException:print("alert 已成功关闭")

alert 可能出现在 iframe

如果 alert嵌套在 iframe 内部,你可能需要先切换 iframe

# 先切换到 `iframe`
iframe = self.driver.find_element(By.CSS_SELECTOR, "iframe")
self.driver.switch_to.frame(iframe)# 再等待 `alert`
alert = WebDriverWait(self.driver, 5).until(EC.alert_is_present())
alert.accept()# 切回默认页面
self.driver.switch_to.default_content()

 5. 示例:处理登录失败的 alert

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoAlertPresentException# 启动浏览器
driver = webdriver.Edge()
driver.get("https://example.com/login")# 输入错误的用户名和密码
driver.find_element(By.CSS_SELECTOR, "#username").send_keys("")
driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
driver.find_element(By.CSS_SELECTOR, "#submit").click()# 等待 `alert` 并获取文本
try:wait = WebDriverWait(driver, 10)alert = wait.until(EC.alert_is_present())print("弹窗内容:", alert.text)alert.accept()
except NoAlertPresentException:print("没有弹窗")# 关闭浏览器
driver.quit()
  • driver.switch_to.alert 用于切换到 alert 并进行操作。
  • alert.text 获取弹窗内容,accept() 点击 确定dismiss() 点击 取消
  • send_keys() 仅适用于 prompt() 类型的弹窗。
  • 使用 WebDriverWait(driver, timeout).until(EC.alert_is_present()) 等待 alert 出现,避免 NoAlertPresentException

http://www.dtcms.com/a/402773.html

相关文章:

  • server2003网站建设小企业网站建设新市场报价
  • 荆州市城市建设投资开发有限公司网站网站 入站规则 设置
  • php网站建立教程.net开发的网站有哪些
  • 云梦县建设安全网站深圳知名网站建设平台
  • 医院网站建设怎么样制作一个网站代码
  • 专业商城网站设计怎样提高网站排名
  • 安康公司做网站wordpress后台为什么这么慢
  • 找人做网站域名怎么过户建设工程规范在哪个网站下载
  • 在线科技成都网站推广公司淮安哪个做网站好点
  • muse怎么做网站wordpress帮助手册
  • 烟台城乡建设学校网站wordpress制作婚礼网页
  • 百年建筑网站华为手机网络推广方案
  • 做导航网站有发展吗南昌简单做网站
  • 怎么做网站赚钱shopify建站公司
  • 大连鼎信网站建设黄页网页的推广网站下载
  • 用固定ip做访问网站服务器福州本地推广
  • 做网站 阿里云0453牡丹江信息网二手房买卖
  • 个人制作一个网站的费用一个销售网站的设计方案
  • 专业网站建设哪家更好云浮北京网站建设
  • 做网站开直通车网络工程师证
  • 微信的微网站模板下载不了企业网站模板趋势
  • 个人网站建立教程揭阳网站制作企业
  • 睢宁建设局网站传媒公司取名字大全
  • 网站分成推广怎么做企业如何加强互联网网站建设
  • 网站需要流量世界互联网峰会
  • 泰安企业建站公司流程网站如何进行优化
  • 搜索优化整站优化包包网站建设
  • 瑞安 网站建设围场网站建设
  • 丰台区的建设网站电子商务网站帮助中心该怎么更好地设计
  • 小型企业网站的设计与实现企业名录搜索