IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> python Selenium初学记录 弹窗处理 no such alert -> 正文阅读

[开发测试]python Selenium初学记录 弹窗处理 no such alert

本意是想写一个自动领取dnf每日签到奖励的小脚本,实际上是功能是已经实现了,可以领取奖励了。

但是我后续想要提取领完奖励后弹窗的文本,直接浏览器里复制xpath,提取不出来。

//*[@id="showAlertContent"]

我就以为是遇到了类似iframe的情况,需要先特殊处理,搜索了一下,发现了关于alert的处理

driver.switch_to.alert()

?

然而报错了,于是又去找no such alert的相关问题,alert还未加载出来导致报错,增加延迟就能解决。然而我尝试了一下,还是报错。

我又去找了下别的带有alert的网页,写了个简单的网页以及程序去跑,发现是能成功的

<html>
<head>
<script type="text/javascript">
function display_alert()
  {
  alert("I am an alert box!!")
  }
</script>
</head>
<body>

<input type="button" onclick="display_alert()"
value="Display alert box" />

</body>
</html>
from selenium import webdriver
driver = webdriver.Edge()
driver.get('file:///C:/Users/A/Desktop/10.html')
driver.find_element_by_xpath('/html/body/input').click()
print(driver.switch_to.alert.text)

我仔细对比了一下dnf网页以及作为例子的网页,发现这两者的弹窗是有差别的,dnf的弹窗存在时,我还可以对网页进行下拉等操作,但是简单例子的弹窗存在时,我只能先关闭弹窗再对网页进行操作。

排除了alert的问题,绕了一圈,我又绕回来了。因为弹窗的提示信息是在执行了js之后才出现的,而弹窗提示下的‘确认’二字是一直存在的,于是我尝试修改xpath去提取,一开始想着节省时间,注释掉了中间登陆的代码, 直接去提取确认,发现没提取出来。然后取消注释之后又能提取出来了。

driver = webdriver.Edge()
driver.get('https://dnf.qq.com/lbact/a20210617comic/index.html')
# #登陆账号
# login_2=driver.find_element_by_xpath('//*[@id="dologin"]')
# driver.execute_script("arguments[0].click();",login_2)
# driver.switch_to.frame('loginIframe')
# qq=driver.find_element_by_xpath('//*[@id="img_out_xxxxxx"]')  #xxxxx为qq号
# webdriver.ActionChains(driver).move_to_element(qq).click(qq).perform()
# # driver.switch_to_default_content()#释放frame
# driver.switch_to.parent_frame()#返回父集  也能释放iframe
# a=driver.find_element_by_xpath('//*[@id="Hold_774826"]')
# time.sleep(2)
# driver.execute_script("arguments[0].click();",a)
# time.sleep(1)
a=driver.find_element_by_xpath('//*[@id="showAlert"]/div/a')
print(a.text)

我继续修改xpath,改成了 //*[@id="showAlert"]/div/p,然后就能成功提取出弹窗的文本了。

总结:

1.弹窗与弹窗不能一概而论,得具体问题具体分析。

2.未登录状态下,未能提取到‘确认’,隐藏元素无法直接获取

3.所以为什么//*[@id="showAlertContent"]不能提取到弹窗的文本呢?我还是没想明白

第一次发帖,虽然没什么技术含量,但也算记录我学习的一个过程了

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-02-07 14:00:36  更:2022-02-07 14:00:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 2:22:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码