如何让JMeter WebDriver Sampler执行后浏览器保持打开状态
解决JMeter WebDriver Sampler执行后浏览器自动关闭的问题
嘿,我来帮你搞定这个浏览器自动关闭的麻烦!其实原因很简单:JMeter的WebDriver Sampler默认会在采样任务完成后自动关闭浏览器,这是它自带的资源清理机制。要让浏览器保持打开,有两种靠谱的方法,我都给你列出来:
方法一:修改浏览器驱动配置(最推荐)
这是最直接的方式,不需要改代码就能搞定:
- 找到你JMeter测试计划里对应的浏览器驱动配置(比如你用Chrome的话就是Chrome Driver Config,Firefox就是Firefox Driver Config)
- 打开这个配置面板,找到
Close Browser选项,把默认的True改成False - 保存配置后重新运行测试,浏览器就会在整个测试完成后保持打开状态,直到你手动关闭它
方法二:在代码里添加等待逻辑(灵活控制)
如果你需要更灵活的控制(比如只在特定场景下让浏览器停留),可以在你的脚本末尾添加一段等待代码,让脚本暂停执行,浏览器自然就不会关闭了。比如:
示例1:固定时长等待(比如停留5分钟)
在代码最后加上这段:
// 等待300000毫秒=5分钟,期间浏览器保持打开 WDS.browser.wait(new java.lang.Runnable() { run: function() {} }, 300000);
示例2:等待用户输入(手动触发才继续)
如果你想等自己操作完再让脚本继续,可以用控制台输入的方式:
// 等待用户在JMeter控制台输入任意内容后才继续执行 var scanner = new java.util.Scanner(java.lang.System.in); WDS.log.info("完成操作后输入任意内容继续..."); scanner.nextLine();
修改后的完整代码示例
把等待逻辑加到你原来的代码里,就是这样:
var pkg = JavaImporter(org.openqa.selenium); var support_ui = JavaImporter(org.openqa.selenium.support.ui.WebDriverWait); var wait = new support_ui.WebDriverWait(WDS.browser, 5000); WDS.sampleResult.sampleStart(); WDS.sampleResult.getLatency(); WDS.log.info("Sample started"); WDS.browser.get('http://192.168.11.47/Webi2i/CustomerA'); var user = WDS.browser.findElement(pkg.By.id('userName')); user.sendKeys(['user1@rdtltd.com']); WDS.log.info("user1 entered"); var password=WDS.browser.findElement(pkg.By.id('Password')); password.sendKeys(['0125602']); WDS.log.info("password entered"); var btnlogin =WDS.browser.findElement(pkg.By.id('btnLogin')); btnlogin.click(); WDS.log.info("button clicked "); var livepage = WDS.browser.findElement(pkg.By.xpath('//*[@id="navbar-large- device"]/ul/li[2]/a/div')); livepage.click(); WDS.log.info("Live page clicked"); // 这里添加等待逻辑,让浏览器保持打开 WDS.browser.wait(new java.lang.Runnable() { run: function() {} }, 300000);
提醒一下:如果用方法一改配置,只要测试计划不结束,浏览器就会一直开着;如果用方法二的等待逻辑,时间到了或者用户输入后,脚本会继续执行,最后还是会关闭浏览器(除非你同时改了配置里的Close Browser选项)。根据你的需求选就行啦~
内容的提问来源于stack exchange,提问作者Chitta Ranjan
相关产品推荐
相关产品推荐

