我正在使用JMeter和jp@gc WebDriver集(v1.3.1)以及Firefox驱动程序(Firefox版本:31.0)。 当我直接从JMeter执行它时,我的测试计划运行得很好。 我可以看到浏览器开放并且可以跟随测试执行。
当我通过JMeter-Server运行它时,虽然通过远程执行,但测试在一个采样器中可重复地失败,并显示以下错误消息:
错误 - com.googlecode.jmeter.plugins.webdriver.sampler.WebDriverSampler:等待元素可点击300秒后超时:By.id:向导
我已将采样器配置为在错误时截取屏幕截图,但这看起来很好。在实际尝试单击之前,采样器会等待元素可点击。
奇怪的是 - 如上所述 - 当我直接执行测试时(即从JMeter GUI),这不会发生
我注意到远程执行的一个区别是,浏览器实际上没有在目标机器上打开(如“可见”)。我可以看到该进程正在运行“-foreground”选项。 这可能很好,但出于调试目的,我想看看实际发生了什么。这可以帮助确定这种情况下的不同之处。
关于如何在这种情况下打开浏览器的任何想法? 或者替代地,关于本地和远程执行如何不同的任何想法?
编辑:我认为我将此跟踪到直接与远程执行的浏览器大小不同。在我从Firefox驱动程序切换到Chrome驱动程序后,这一点变得明显。测试仍然在远程执行中失败,但屏幕截图显示水平&垂直滚动条。 Firefox没有,但屏幕截图显然没有显示“完整的真相”。
答案 0 :(得分:1)
在比较直接和远程执行时,问题确实是由不同的浏览器大小引起的。我想在测试中单击的元素在远程执行时只是在屏幕外,因此无法单击。然而,它可以被找到并且也匹配" 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()
在远程执行中不起作用! 这似乎以某种方式减少了屏幕尺寸,即使它之前被设置为安全"大小