带有 jp@gc Firefox WebDriver 的 JMeter:远程执行中的不同浏览器大小

JMeter with jp@gc Firefox WebDriver: Different browser size in remote execution

我正在使用带有 jp@gc WebDriver 集 (v1.3.1) 和 Firefox 驱动程序(Firefox 版本:31.0)的 JMeter。 当我直接从 JMeter 执行它时,我的测试计划 运行s 通过得很好。 我可以看到浏览器打开并可以跟随测试执行。

当我通过 JMeter-Server 运行 它通过远程执行时,测试在一个采样器中重复失败,并出现以下错误消息:

ERROR - com.googlecode.jmeter.plugins.webdriver.sampler.WebDriverSampler: Timed out after 300 seconds waiting for element to be clickable: By.id: Wizard

我已将采样器配置为在出现错误时截取屏幕截图,但这看起来不错。采样器在实际尝试单击之前会等待元素可单击。

奇怪的是 - 如上所述 - 当我直接执行测试时(即从 JMeter GUI),这并没有发生

我注意到远程执行的一个区别是,浏览器实际上并没有在目标机器上打开(如“可见”)。我可以看到该过程是 运行“-foreground”选项。 这可能没问题,但出于调试目的,我想看看实际发生了什么。这有助于确定这种情况下的不同之处。

关于在那种情况下如何设法打开浏览器的任何想法? 或者,关于本地和远程执行有何不同,您有什么想法吗?

编辑:我想我将其追踪到直接执行与远程执行的浏览器大小不同。在我从 Firefox 驱动程序切换到 Chrome 驱动程序后,这一点变得很明显。远程执行测试仍然失败,但截图显示水平和垂直滚动条。 Firefox 没有,但屏幕截图显然没有显示“全部真相”。

问题确实是直接执行和远程执行比较时浏览器大小不同造成的。我想在我的测试中单击的元素在远程执行中只是在屏幕之外,因此无法单击。然而它可以被找到并且也匹配"elementToBeClickable"条件,这有点违反直觉。

为了避免这种情况,我在测试开始时专门设置了一个 "safe" 和固定的浏览器大小:

WDS.browser.manage().window().setPosition(new pkg.Point(0, 0))
WDS.browser.manage().window().setSize(new pkg.Dimension(1280, 1024))

通过这种直接和远程执行具有相同的大小,并且测试按预期运行。 注意

WDS.browser.manage().window().maximize()

远程执行无效! 这似乎以某种方式减小了屏幕尺寸,即使它之前设置为 "safe" 尺寸。