python 判断弹出框_31- 判断弹出框存在(alert_is_present)

本文介绍如何使用Python的Selenium库来判断和处理网页中的alert弹出框。通过`alert_is_present`类分析弹出框的存在,并提供示例代码展示了在弹出框出现时进行确认操作的方法。

[TOC]

前言

系统弹窗这个是很常见的场景,有时候它不弹出来去操作的话,会抛异常。那么又不知道它啥时候会出来,那么就需要去判断弹窗是否弹出了。

## 一、判断alert源码分析

```

class alert_is_present(object):

""" Expect an alert to be present."""

"""判断当前页面的alert弹窗"""

def __init__(self):

pass

def __call__(self, driver):

try:

alert = driver.switch_to.alert

alert.text

return alert

except NoAlertPresentException:

return False

1. 这个类比较简单,初始化里面无内容

2. __call__里面就是判断如果正常获取到弹出窗的text内容就返回alert这个对象(注意这里不是返回Ture),没有获取到就返回False

```

## 二、实例操作

1. 前面的操作步骤优化了下,为了提高脚本的稳定性,确保元素出现后操作,这里结合WebDriverWait里的方法;

2. 实现步骤如下,这里判断的结果返回有两种:没找到就返回False;找到就返回alert对象;

3. 先判断alert是否弹出,如果弹出就点确定按钮accept()。

![Snipaste_2020-09-10_10-01-38.png](http://i.loli.net/2020/09/10/ugoqLNXiwKbt8Ps.png)

## 三、参考代码

```

from selenium import webdriver

from selenium.webdriver.common.action_chains import ActionChains

from selenium.webdriver.support.select import Select

from selenium.webdriver.support.wait import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()

driver.get("https://www.baidu.com")

mouse = WebDriverWait(driver, 10).until(lambda x:x.find_element("id", "s-usersetting-top"))

ActionChains(driver).move_to_element(mouse).perform()

WebDriverWait(driver, 10).until(lambda x:x.find_element("css selector", ".setpref")).click()

# 选择设置项

s = WebDriverWait(driver, 10).until(lambda x:x.find_element("id", "nr_2"))

# 点保存设置按钮

js = 'document.getElementsByClassName("prefpanelgo")[0].click();'

driver.execute_script(js)

# 判断弹框结果

result = EC.alert_is_present()(driver)

if result:

print(result.text)

result.accept()

else:

print("alert未弹出!!")

```

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值