首页 > 其他分享 >多任务一次搞定!selenium自动化复用浏览器技巧大揭秘

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

时间:2024-03-05 11:34:29浏览次数:25  
标签:importorg 浏览器 selenium driver 复用 openqa 多任务

复用浏览器

简介

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

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

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

复用浏览器应用场景

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

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

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

浏览器复用的优点

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

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

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

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

在这里插入图片描述

在这里插入图片描述

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

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

获取更多软件测试技术资料/面试题解析,请点击!

标签:importorg,浏览器,selenium,driver,复用,openqa,多任务
From: https://www.cnblogs.com/hogwarts/p/18053615

相关文章

  • selenium的基本使用
    1.基本使用browser.current_urlbrowser.get_cookies()browser.page_source2.定位元素fromselenium.webdriver.common.byimportByinput_first=browser.find_element(by=By.ID,value='q')input_first=browser.find_element(by=By.CSS_SELECTOR,value='......
  • 2024-selenium-问题一:java.io.IOException: Invalid Status code=403 text=Forbidden
    问题截图:  问题分析: 参考网址:https://blog.csdn.net/weixin_46739493/article/details/134163739问题解决:1、chrome版本为:版本114.0.5735.199(正式版本);driver的版本为:114.0.5735.90; java-seleium版本为:4.0.0-rc-21<dependency>2<groupId>org.......
  • pip install selenium报错 raise ReadTimeoutError--解决方法
    pipinstallselenium报错如下:raiseReadTimeoutError(self._pool,None,"Readtimedout.")pip._vendor.urllib3.exceptions.ReadTimeoutError:HTTPSConnectionPool(host='files.pythonhosted.org',port=443):Readtimedout. 原因:timeout超时,默认15s解......
  • Selenium帮助你轻松实现浏览器多窗口操作
    多窗口处理简介元素有属性,浏览器的窗口其实也有属性的,浏览器窗口的属性用句柄(handle)来识别。每个窗口都有一个唯一的窗口句柄,该句柄在窗口创建时由操作系统分配,窗口句柄通常在窗口的生命周期内保持不变,但在某些情况下,例如窗口关闭后,句柄可能被销毁,并且操作系统可以在以后将相......
  • C# 使用selenium 彻底解决浏览器版本不同的问题
    浏览器版本问题导致的错误如下:System.InvalidOperationException:“sessionnotcreated:ThisversionofChromeDriveronlysupportsChromeversion114Currentbrowserversionis122.0.6261.95withbinarypathC:\ProgramFiles\Google\Chrome\Application\chrome.exe(......
  • 网页浏览器Chrome开发者调试工具-Source(源码)-断点调试、条件断点、日志断点
    前言全局说明网页浏览器Chrome开发者调试工具-Source(源码)-断点调试、条件断点、日志断点断点,是某行代码要执行,还没有执行的一个暂停点一、截图对照1.1Chrome浏览器1.1.1蓝色,普通断点1.1.2设置断点类型图中分别是:backpoint:普通断点(蓝色)Conditionalbreakp......
  • 使用 CSS 如何禁用浏览器打印页面 All In One
    使用CSS如何禁用浏览器打印页面AllInOneprint.css禁用PDF导出网页有时,你的网站或应用程序可能希望改善用户在打印内容时的体验。有几种可能的情况:你希望根据纸张的大小和形状调整布局。你希望使用不同的样式来增强纸上内容的外观。你希望使用更高分辨率的图像以......
  • Selenium自动化爬取网页数据——Python实现
    Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE,MozillaFirefox,Safari,GoogleChrome,Opera,Edge等。这个工具的主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能够很好得工作在不同浏览器和操作......
  • 浏览器 缓存
    2种方法解决图片缓存:方法1:添加代码https://www.cnblogs.com/lgx5/p/15180516.html 方法2:浏览器里面勾上不要缓存。https://juejin.cn/post/7178794675044614203  erwa.cn二娃备忘 ......
  • 探索浏览器录屏Web API 接口的应用前景与限制
    一、浏览器录屏WebAPI接口的优点:简化录屏流程:浏览器录屏WebAPI接口可以直接在网页中调用,无需安装额外的插件或软件,简化了录屏的流程。实时录制与传输:WebAPI接口可以实时录制用户操作并将录屏数据传输到服务器,实现即时的用户行为监测和分析。跨平台兼容性:浏览器录屏W......