【实测】selenium脚本解决随机弹窗广告问题

简介: 【实测】selenium脚本解决随机弹窗广告问题

欢迎阅读测试开发干货文章:

640.jpg640.jpg


开始正文:---------

   

selenium是通过webdriver操作目标来实现ui自动化脚本。

   

但一直有个问题很让人头疼,那就是各种随机不可预测的弹窗广告的出现,这种广告出现后需要点击一下x 或按钮等才能关掉,如果不关掉,则后续脚本无法正常运行,直接导致所有用例失败。今天就来分享几个解决方案

 

1. 有不少同学可能会在广告经常出现的页面脚本代码中,设置一个try,当该页面脚本突然无法运行下去的时候,就会认为是弹窗出现,然后在except中直接放上关闭弹窗的代码,然后关闭之后重跑该用例。其实这样做也是确实可以解决一下问题,如果毕竟有堵的成分且不够优雅,或者不是特别的靠谱。但不可否认这是最容易实现和想到的方案。

 

2. 设置子线程进行巡逻,主线程该跑脚本跑脚本。子线程负责进行环境维护,出现弹窗就关掉仅此而已。当然子线程可以继续扩展,比如发现弹窗后截图,简单判断一下记录一下再关掉。除此之外,子线程还可以帮主线程的脚本运行提供其他各种辅助作用,相当于你的游戏角色大c下副本,带了一个奶妈,肯定是事半功倍。

   

那么子线程进行巡逻,自然不能跟主线程共用一个driver对象,否则这个driver就变成了既要同时执行用例脚本,又要无时无刻的去盯着随机弹窗广告,那会极大拖慢执行速度。所以子线程就可以选择再启动一个driver对象的方式。那此刻问题又来了:新的driver能控制主线程driver的浏览器么?正常情况下是不能控制的。除非按照下面思路进行设置:

   

1. 用命令启动浏览器,启动的时候要带上端口,只有命令启动,才可以添加端口参数。

 

2. 脚本开头创建启动项options,然后添加debugaddress,并设置为127.0.0.1:之前的端口,这样会让driver不新建浏览器,而是直接接着你命令启动的浏览器进行操作。

   

3.  用thread库创建一个线程,内容就是新建一个driver实例作为子线程,用来辅助,也就是里面用一个when True来在整脚本生命周期内 无时无刻的去检查弹窗广告,一旦检查到,才去瞬间关闭,亲测好用。

 

4. 你的主线该怎么运行就怎么运行,完全不用担心弹窗的事了,当然双线程,并且有个辅助线程一直在不断的监控,这样确实会更耗费系统资源。所以建议封装成对应的类,并且增加可控的创建和结束功能,在适当的情况下比如广告容易出现的用例执行时开启即可。结束的条件也可以多样化,比如点击几次广告后,该辅助线程就自动关闭。

   

最后奉上子线程控制同浏览器demo代码:


from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_experimental_option("debuggerAddress", "127.0.0.1:6789")  #手动命令启动浏览器需要设置端口未6789 :  --remote-debugging-port=6789
import threading
def a():
    driver = webdriver.Chrome(options=options)
    while True:
        try:
            driver.find_element(By.ID,'弹窗关闭的id').click()
            driver.switch_to.alert.accept()
        except:
            pass
        time.sleep(1) # 扫描监控时间
        # 退出驱动条件自行设计
        driver.quit()
t1 = threading.Thread(target=a)
t1.setDaemon(True) #守护线程,这样主脚本结束后 该线程也会结束。
t1.start()
 # 此处你可以正常写你的主线程的 脚本了
driver = webdriver.Chrome(options=options)
driver.get('')
...
相关文章
|
6月前
|
JavaScript 前端开发 测试技术
使用Selenium执行JavaScript脚本:探索Web自动化的新领域
本文介绍了如何在Selenium中使用JavaScript解决自动化测试中的复杂问题。Selenium的`execute_script`函数用于同步执行JS,例如滑动页面、操作时间控件等。在滑动操作示例中,通过JS将页面滚动到底部,点击下一页并获取页面信息。对于只读时间控件,利用JS去除readonly属性并设置新日期。使用JS扩展了Selenium的功能,提高了测试效率和精准度,适用于各种自动化测试场景。
|
3月前
|
前端开发 JavaScript Java
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
本文介绍了一个结合SpringBoot和Python的实用功能,旨在监控iPhone 15的库存状态并通过邮件提醒用户。系统采用SpringBoot监听苹果官网API,解析JSON数据判断是否有货,并展示最近的库存记录。此外,还能自动触发Selenium+Python脚本实现自动化购买。文中详细介绍了技术栈、接口分析、邮件配置及自动化脚本的设置方法。该项目不仅适用于熟悉后端开发的人员,也适合回顾Layui和Jquery等前端技术。
53 0
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
|
2月前
|
敏捷开发 测试技术 持续交付
自动化测试之美:如何用Selenium和Python打造高效测试脚本
【9月更文挑战第13天】在软件开发的海洋中,自动化测试是那抹不可或缺的亮色。它不仅提升了测试效率,还保障了产品质量。本文将带你领略使用Selenium和Python构建自动化测试脚本的魅力所在,从环境的搭建到脚本的编写,再到问题的排查,每一步都是对软件质量把控的深刻理解和实践。让我们开始这段探索之旅,解锁自动化测试的秘密吧!
66 0
|
5月前
|
数据采集 前端开发 JavaScript
数据采集Selenium中的弹窗处理
使用Selenium自动化处理网页弹窗,包括浏览器警告(alert、confirm、prompt)和HTML自定义弹窗。示例代码展示了如何接受警
280 0
数据采集Selenium中的弹窗处理
|
6月前
|
前端开发 Java 测试技术
《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程)
【2月更文挑战第14天】《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程) 前面几篇宏哥介绍了两种(java和maven)环境搭建和三大浏览器的启动方法,这篇文章宏哥将要介绍第一个自动化测试脚本。前边环境都搭建成功了,浏览器也驱动成功了,那么我们不着急学习其他内容,首先宏哥搭建好的环境中创建首个完整的自动化测试脚本,让小伙伴或者童鞋们提前感受感受,也是为了激起大家的学习兴趣。宏哥的个人经验是:自动化脚本编写比较容易,最大的困难去如何去写测试断言。自动化测试,最重要的还是落在测试上面,而不是自动化,自动化只是手段。
182 1
《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程)
|
6月前
|
Web App开发 JavaScript Java
《手把手教你》系列技巧篇(二十八)-java+ selenium自动化测试-处理模态对话框弹窗(详解教程)
【4月更文挑战第20天】本文主要介绍了如何使用Selenium处理网页中的alert弹窗,包括accept()、dismiss()、getText()和sendKeys()等方法。文章首先简述了在前一篇文章中提及的switchTo()方法,然后详细讲解了alert弹窗的几个关键方法。接着,作者给出了一个名为ModalDialogueBox.html的测试页面,展示了警告框、确认框和提示框三种类型的模态对话框,并提供了相应的JavaScript代码。最后,文章提供了一个实际的项目实战案例,展示了如何在Java中使用Selenium处理alert弹窗,并给出了相关代码示例。
88 0
|
6月前
|
Web App开发 IDE 测试技术
实战练习:用airtest-selenium脚本爬取百度热搜标题
实战练习:用airtest-selenium脚本爬取百度热搜标题
140 0
|
测试技术
python-selenium学以致用-自动化抢课脚本
python-selenium学以致用-自动化抢课脚本
110 0
|
Web App开发 自然语言处理 IDE
自动化测试之 selenium 的安装以及 selenium IDE 录制自动化脚本的用法
1. 什么是自动化测试 1)单元测试 2)接口自动化 3)UI 自动化 2. Selenium 介绍 1)Selenium IDE 2)Webdriver 3)Selenium Grid 3. 如何使用 Selenium IDE 录制脚本 4. 在 python 环境中安装 Selenium 框架
770 0
|
数据采集 数据安全/隐私保护 Python
Selenium爬虫过程中遇到弹窗验证
Selenium爬虫过程中遇到弹窗验证