多任务一次搞定!selenium自动化复用浏览器技巧大揭秘

简介: 多任务一次搞定!selenium自动化复用浏览器技巧大揭秘

复用浏览器

简介

在 Web 自动化测试中,浏览器复用是指将已打开的浏览器实例用于多个测试用例。这可以显著提高测试效率和性能,并减少资源消耗。浏览器复用通常与浏览器驱动程序(如 Selenium WebDriver)一起使用,以便更好地管理浏览器窗口和标签页。常见的浏览器复用场景如下:

  • 多个测试用例复用同一个浏览器实例:在自动化测试中,你可以创建一个浏览器实例,然后在多个测试用例之间共享它,而不必为每个测试用例启动和关闭浏览器。这可以加速测试执行并减少资源消耗。

  • 多个标签页或窗口:浏览器复用还可以用于在同一浏览器实例中打开多个标签页或窗口,并在它们之间切换。这在某些测试场景下非常有用,例如在一个标签页中执行登录,然后在另一个标签页中执行其他操作。

复用浏览器应用场景

在运行 Selenium 自动化时,通常要求在成功扫码登陆后才能执行后续操作。为了提高效率,可以在脚本运行之前先进行扫码登录,并在运行脚本时复用已经打开的浏览器窗口。

当调试了某个步骤很多的测试用例,前面的 N-1 步骤已经成功执行,只需调试第 N 步。为了避免重新运行整个脚本造成耗时过多,这时我们可以直接复用浏览器只操作第 N 步。

复用浏览器的特点在于, webdriver 在启动时不会创建新的浏览器窗口,而是重用已打开的浏览器的当前页面,使得可以对元素进行进一步的操作。这种方式可以显著提高测试脚本的执行效率。

浏览器复用的优点

  • 节省时间:启动和关闭浏览器通常需要一定的时间。通过复用浏览器,可以减少这些开销,从而更快地执行测试用例。

  • 资源优化:每个浏览器实例都需要占用计算机资源,包括内存。通过复用浏览器,可以降低资源消耗。

  • 更高效的内存管理:浏览器复用有助于更有效地管理浏览器的内存,因为每次启动浏览器时,它会加载并初始化一个新的浏览器进程。

使用和未使用复用浏览器流程如图所示:

image.png

image.png

复用已有浏览器-配置步骤

  1. 需要退出当前所有的谷歌浏览器(特别注意)。

  2. 输入启动命令,通过命令启动谷歌浏览器

  • 找到 chrome 的启动路径

  • 配置环境变量

    • windows:chrome --remote-debugging-port=9222

    • mac:Google\ Chrome --remote-debugging-port=9222

  1. 验证是否启动成功

    访问浏览器查看浏览器是否启动 http://localhost:9222/

复用已有浏览器-代码设置

Python 实现

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

option = Options()
option.debugger_address = "localhost:9222"
driver = webdriver.Chrome(options=option)
driver.implicitly_wait(10)
driver.get("https://work.weixin.qq.com/wework_admin/frame")
# 人工扫码
time.sleep(10)
# 点击通讯录
driver.find_element(By.XPATH,'//*[text()="通讯录"]').click()

Java 实现


importorg.junit.jupiter.api.AfterAll;
importorg.junit.jupiter.api.BeforeAll;
importorg.junit.jupiter.api.Test;
importorg.openqa.selenium.By;
importorg.openqa.selenium.WebDriver;
importorg.openqa.selenium.WebElement;
importorg.openqa.selenium.chrome.ChromeDriver;
importorg.openqa.selenium.chrome.ChromeOptions;
publicclass web_useAgainTest{
   
   
staticWebDriverdriver;
@BeforeAll
staticvoidsetup(){
   
   
ChromeOptionschromeOptions=newChromeOptions();
chromeOptions.setExperimentalOption("debuggerAddress","localhost:9222");
driver=newChromeDriver(chromeOptions);



}
@AfterAll
staticvoidteardown(){
   
   
driver.quit();

}


@Test
voidremote2()throwsInterruptedException{
   
   

driver.get("https://work.weixin.qq.com/wework_admin/frame");
//人工扫码
Thread.sleep(30000);

WebElementelement=driver.findElement(By.xpath("//*[@class ='index_service_cnt_itemWrap']"));
element.click();
Thread.sleep(1000);
}

}

使用复用浏览器,只需要扫码登陆一次,只要浏览器窗口不关闭,就可以一直使用,从而避免每次打开都需要扫码。

调试代码

Python 实现


from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

option = Options()
option.debugger_address = "localhost:9222"
driver = webdriver.Chrome(options=option)
driver.implicitly_wait(10)
# driver.get("https://work.weixin.qq.com/wework_admin/frame")
# 人工扫码
# time.sleep(10)
# driver.find_element(By.XPATH,'//*[text()="通讯录"]').click()
# 点击添加成员
driver.find_elements(By.XPATH,'//*[text()="添加成员"]')[1].click()

Java 实现


importorg.junit.jupiter.api.AfterAll;
importorg.junit.jupiter.api.BeforeAll;
importorg.junit.jupiter.api.Test;
importorg.openqa.selenium.By;
importorg.openqa.selenium.WebDriver;
importorg.openqa.selenium.WebElement;
importorg.openqa.selenium.chrome.ChromeDriver;
importorg.openqa.selenium.chrome.ChromeOptions;
staticWebDriverdriver;
@BeforeAll
staticvoidsetup(){
   
   
ChromeOptionschromeOptions=newChromeOptions();
chromeOptions.setExperimentalOption("debuggerAddress","localhost:9222");


}
@AfterAll
staticvoidteardown(){
   
   
driver.quit();

}


@Test
voidremote2()throwsInterruptedException{
   
   

driver=newChromeDriver(chromeOptions);

WebElementelement=driver.findElement(By.xpath("//*[text()='添加成员'][1]"));

element.click();
Thread.sleep(1000);
}

如果需要在通讯录页面继续进行点击添加成员的操作,可以将打开界面和点击通讯录的操作注释,编写要进行的操作。

总结

复用浏览器是指在启动 selenium 程序时,浏览器不另外打开一个新的页面,而是直接使用现有的浏览器页面,并进行操作。

相关文章
|
2月前
|
数据采集 前端开发 JavaScript
深挖navigator.webdriver浏览器自动化检测的底层分析
本文详细讲解了如何通过技术手段破解浏览器 `navigator.webdriver` 检测,结合爬虫代理、多线程等策略,在豆瓣图书页面批量采集数据。具体包括:隐藏 Selenium 特征、配置代理突破 IP 限制、设置伪装用户、利用多线程提升效率。文章面向初学者,提供分步教程与示例代码,同时设有「陷阱警告」帮助规避常见问题。目标是从底层实现反检测,高效采集图书评分、简介、作者等信息,适合具备 Python 和 Selenium 基础的读者实践学习。
107 12
深挖navigator.webdriver浏览器自动化检测的底层分析
|
4月前
|
数据采集 人工智能 JavaScript
Browser Use:40.7K Star!一句话让AI完全接管浏览器!自动规划完成任务,多标签页同时管理
Browser Use 是一款专为大语言模型设计的智能浏览器自动化工具,支持多标签页管理、视觉识别、内容提取等功能,并能记录和重复执行特定动作,适用于多种应用场景。
1197 21
Browser Use:40.7K Star!一句话让AI完全接管浏览器!自动规划完成任务,多标签页同时管理
|
3月前
|
数据采集 JavaScript 前端开发
浏览器自动化检测对抗:修改navigator.webdriver属性的底层实现
本文介绍了如何构建一个反检测爬虫以爬取Amazon商品信息。通过使用`undetected-chromedriver`规避自动化检测,修改`navigator.webdriver`属性隐藏痕迹,并结合代理、Cookie和User-Agent技术,实现稳定的数据采集。代码包含浏览器配置、无痕设置、关键词搜索及数据提取等功能,同时提供常见问题解决方法,助你高效应对反爬策略。
219 1
|
4月前
|
存储 人工智能 API
OWL:告别繁琐任务!开源多智能体系统实现自动化协作,效率提升10倍
OWL 是基于 CAMEL-AI 框架开发的多智能体协作系统,通过智能体之间的动态交互实现高效的任务自动化,支持角色分配、任务分解和记忆功能,适用于代码生成、文档撰写、数据分析等多种场景。
1163 13
OWL:告别繁琐任务!开源多智能体系统实现自动化协作,效率提升10倍
|
4月前
|
Web App开发 人工智能 JavaScript
Nanobrowser:开源版OpenAI Operator!AI自动操控浏览器,复杂网页任务一键搞定
Nanobrowser 是一款开源的 Chrome 扩展工具,基于多智能体系统实现复杂的网页任务自动化,支持多种大型语言模型,完全免费且注重隐私保护。
511 1
|
6月前
|
Web App开发 人工智能 JSON
AutoMouser:AI Chrome扩展程序,实时跟踪用户的浏览器操作,自动生成自动化操作脚本
AutoMouser是一款Chrome扩展程序,能够实时跟踪用户交互行为,并基于OpenAI的GPT模型自动生成Selenium测试代码,简化自动化测试流程。
394 17
AutoMouser:AI Chrome扩展程序,实时跟踪用户的浏览器操作,自动生成自动化操作脚本
|
7月前
|
Web App开发 数据采集 JavaScript
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
本文介绍了Selenium、Chrome DevTools及Chrome DevTools Protocol (CDP) 的基本功能与应用。Selenium是一款开源自动化测试工具,适用于网页端应用程序测试和数据采集,具备跨平台特性。Chrome DevTools内置浏览器中,提供调试、分析Web应用程序的功能,包括元素、控制台、源代码和网络选项卡等。CDP是一套用于与Chromium内核浏览器通信的API,支持自动化测试和性能分析。文中还展示了Selenium与CDP结合使用的示例,如捕获网络请求数据和打印网页内容,并推荐了相关书籍和资源以供深入学习。
1091 39
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
|
6月前
|
人工智能 开发框架 自然语言处理
Eko:一句话就能快速构建复杂工作流的 AI 代理开发框架!快速实现自动操作电脑和浏览器完成任务
Eko 是 Fellou AI 推出的开源 AI 代理开发框架,支持自然语言驱动,帮助开发者快速构建从简单指令到复杂工作流的智能代理。
915 12
Eko:一句话就能快速构建复杂工作流的 AI 代理开发框架!快速实现自动操作电脑和浏览器完成任务
|
7月前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
238 31
Selenium IDE:Web自动化测试的得力助手
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
CogAgent-9B:智谱 AI 开源 GLM-PC 的基座模型,专注于预测和执行 GUI 操作,可应用于自动化交互任务
CogAgent-9B 是智谱AI基于 GLM-4V-9B 训练的专用Agent任务模型,支持高分辨率图像处理和双语交互,能够预测并执行GUI操作,广泛应用于自动化任务。
250 12
CogAgent-9B:智谱 AI 开源 GLM-PC 的基座模型,专注于预测和执行 GUI 操作,可应用于自动化交互任务