多任务一次搞定!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 程序时,浏览器不另外打开一个新的页面,而是直接使用现有的浏览器页面,并进行操作。

相关文章
|
1月前
|
数据采集 测试技术 Python
自动化淘宝秒杀:使用Selenium WebDriver的实战指南
本文详细介绍了如何利用Selenium WebDriver自动化淘宝秒杀操作,包括环境配置、代码实现及注意事项,旨在帮助读者提升秒杀成功率,同时提醒合理使用以遵守平台规则。
82 8
|
2天前
|
Web App开发 数据采集 JavaScript
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
本文介绍了Selenium、Chrome DevTools及Chrome DevTools Protocol (CDP) 的基本功能与应用。Selenium是一款开源自动化测试工具,适用于网页端应用程序测试和数据采集,具备跨平台特性。Chrome DevTools内置浏览器中,提供调试、分析Web应用程序的功能,包括元素、控制台、源代码和网络选项卡等。CDP是一套用于与Chromium内核浏览器通信的API,支持自动化测试和性能分析。文中还展示了Selenium与CDP结合使用的示例,如捕获网络请求数据和打印网页内容,并推荐了相关书籍和资源以供深入学习。
63 39
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
|
11天前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
61 19
Selenium IDE:Web自动化测试的得力助手
|
13天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
92 17
Selenium:强大的 Web 自动化测试工具
|
18天前
|
存储 人工智能 数据库
Codel:AI代理工具,支持在终端、浏览器、编辑器执行复杂任务和项目
Codel是一款全自主AI代理工具,支持在终端、浏览器和编辑器中执行复杂任务和项目。它运行在沙盒化的Docker环境中,具备自主操作能力,内置浏览器和文本编辑器,所有操作记录存储于PostgreSQL数据库。Codel能够自动完成复杂任务,如创建项目结构、进行网络搜索等,适用于自动化编程、研究与开发、教育与培训以及数据科学与分析等多个领域。
55 11
Codel:AI代理工具,支持在终端、浏览器、编辑器执行复杂任务和项目
|
19天前
|
人工智能 自然语言处理 JavaScript
Agent-E:基于 AutoGen 代理框架构建的 AI 浏览器自动化系统
Agent-E 是一个基于 AutoGen 代理框架构建的智能自动化系统,专注于浏览器内的自动化操作。它能够执行多种复杂任务,如填写表单、搜索和排序电商产品、定位网页内容等,从而提高在线效率,减少重复劳动。本文将详细介绍 Agent-E 的功能、技术原理以及如何运行该系统。
66 5
Agent-E:基于 AutoGen 代理框架构建的 AI 浏览器自动化系统
|
25天前
|
数据采集 JavaScript 前端开发
浏览器自动化
浏览器自动化利用工具(如Selenium WebDriver、Puppeteer)模拟用户行为,实现测试、数据抓取等功能。它涵盖启动/关闭浏览器、元素定位操作、事件模拟、性能及可访问性测试等,广泛应用于Web应用的开发与维护,提升测试效率和可靠性。
|
28天前
|
运维 Ubuntu Linux
自动化运维:使用Ansible简化日常任务
在快节奏的IT世界中,时间就是一切。本文将揭示如何通过Ansible这一强大的自动化工具来节省宝贵的时间,从而提高效率和减少人为错误。我们将深入探讨Ansible的核心概念、安装过程以及如何编写简单的playbook来自动执行常见运维任务。无论你是新手还是有经验的系统管理员,这篇文章都将为你提供实用的知识和技能,让你能够更好地控制你的服务器环境。
|
1月前
|
运维 监控 网络安全
自动化运维的崛起:如何利用Python脚本简化日常任务
【10月更文挑战第43天】在数字化时代的浪潮中,运维工作已从繁琐的手工操作转变为高效的自动化流程。本文将引导您了解如何运用Python编写脚本,以实现日常运维任务的自动化,从而提升工作效率和准确性。我们将通过一个实际案例,展示如何使用Python来自动部署应用、监控服务器状态并生成报告。文章不仅适合运维新手入门,也能为有经验的运维工程师提供新的视角和灵感。
|
1月前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
82 3
下一篇
DataWorks