Jmeter中的WebDriver Sampler - 切换到新窗口,在对话框中允许麦克风和摄像头,执行操作,关闭新窗口,返回初始窗口

问题描述

我正在 JavaScript 上的 Jmeter 中使用 WebDriver Sampler 处理以下场景:

  1. 在主窗口中执行多个请求;

  2. 对于 1 个特定交易:

    2.1. - 从初始窗口切换到新创建的窗口(两个窗口的标题相同),

    2.2. - 允许麦克风和摄像头(新窗口打开后会出现浏览器对话框并阻止某些页面元素的活动,直到不允许摄像头和麦克风),

    2.3. - 在页面上查找元素并对其执行操作(我为此编写了 javascript 片段),

    2.4. - 关闭第二个窗口;

  3. 返回初始主窗口;

  4. 在主窗口中处理请求。

对于第 1 步和第 4 步,我需要的都是 js 代码

对于 step3,我想使用解决方案:

//切换回初始主窗口:

WDS.browser.switchTo().defaultContent();

但我仍然使用 2.1 和 2.2。

2.1、2.2 和 2.4 的最佳解决方案是什么?

对于 2.2。我尝试在 Firefox WebDriver 配置中使用“设置首选项”部分并使用以下内容填充它:

enter image description here

缺点: 第一 - 不幸的是,它不起作用,第二 - 我需要这些首选项与 Chrome 一起使用,而不仅仅是在 FF 中。

你能提供有用的提示吗,2.1、2.2、2.4?

解决方法

我不认为此模式弹出窗口是可由 WebDriver 控制的“窗口”,它是操作系统的本机窗口,因此您将无法使用 WebDriver 函数与其交互,选项位于:

  1. 使用 java.awt.Robot 类模拟键盘输入

  2. 使用底层操作系统方法定位窗口并向其发送相应的消息,入口点为JNI

  3. 在浏览器启动级别抑制这些弹出窗口:

    • 对于 Firefox,您可以load a custom profile 允许您正在测试的网站使用摄像头和麦克风

    • 对于 Chromium 和衍生产品,您可以设置以下 ChromeOptions

      • use-fake-ui-for-media-stream
      • use-fake-device-for-media-stream

    遗憾的是,Firefox Driver ConfigChrome Driver Config 这两种方法都不是开箱即用的,因此您必须切换到 JSR223 Sampler and Groovy language 来实现您的测试场景