selenium-webdriver - Jmeter WebDriverSampler 因 Chromedriver headless 而失败

标签 selenium-webdriver jmeter selenium-chromedriver jmeter-plugins google-chrome-headless

我在 Jmeter 中使用 WebDriverSampler 进行了一些测试,这些测试可以与 chromedriver 一起正常工作。它是一个 selenium 脚本,可以打开一个网页并检查它是否包含一系列元素。一切正常,直到我尝试使用 chromedriver headless 选项。

在这种情况下,我得到异常“预期条件失败:WAITING元素位于:By.xpath:...”,就好像该元素不存在尚未加载一样。我不知道会发生什么,因为如果我停止使用 headless 选项,如果一切正常并找到真正存在的元素。

这是一个使用的代码示例(它可以在没有 headless 选项的情况下工作):

var wait = new support_ui.WebDriverWait(WDS.browser, 30);
var conditions = org.openqa.selenium.support.ui.ExpectedConditions

WDS.sampleResult.sampleStart();
WDS.sampleResult.getLatency();

WDS.browser.get('http://mi-app/');

try{
  wait.until(conditions.presenceOfElementLocated(pkg.By.xpath('/ruta_de elemento_existente')));
  WDS.log.info('OK')
}catch(e){
    WDS.sampleResult.setSuccessful(false);
    WDS.sampleResult.setResponseMessage('Fail');
    WDS.log.error(e.message)
}

try{
  wait.until(conditions.presenceOfElementLocated(pkg.By.xpath('/ruta_de elemento2_existente')));
  WDS.log.info('OK2')
}catch(e){
    WDS.sampleResult.setSuccessful(false);
    WDS.sampleResult.setResponseMessage('Fail2');
    WDS.log.error(e.message)
}

WDS.sampleResult.sampleEnd();

我希望有人能帮我解决这个问题,因为我需要使用 headless 选项。非常感谢您的宝贵时间。

最佳答案

  1. 您可以将页面源打印到jmeter.log file通过使用以下函数:

    WDS.log.info(WDS.browser.getPageSource())
    
  2. 或者甚至将其保存到单独的文件中,例如:

    org.apache.commons.io.FileUtils.writeStringToFile(new java.io.File('test.html'), WDS.browser.getPageSource())
    
  3. take screenshot失败时:

    WDS.browser.getScreenshotAs(org.openqa.selenium.OutputType.FILE).renameTo(new java.io.File('test.png'))
    

    查看 The WebDriver Sampler: Your Top 10 Questions Answered文章了解更多信息。


另请注意,如果您运行 Selenium 测试的机器没有 GUI,您仍然可以正常启动浏览器,即 Xvfb在 Linux 或 Local System 下Windows 上的帐户

关于selenium-webdriver - Jmeter WebDriverSampler 因 Chromedriver headless 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54900486/

相关文章:

linux - 启动 chromedriver 时如何修复 "[SEVERE]: bind() failed: Cannot assign requested address (99)"

python - 如何在 Chrome 中使用 Selenium 处理另存为对话框

java - ChromeDriver——可怕的“元素在 (x, y) 点不可点击。其他元素会收到点击

java - 如何从 Selenium 中的跨度类中获取文本

java - 关于 Selenium 的新手问题

jmeter - jmeter 没有图表结果

jmeter - 在 JMeter 2.11 中从 JMeter 2.7 打开 JMX 文件时出现转换错误

java - Selenium :点击 <li>

c# - 实例化 EdgeDriver 时会发生异常

JMeter:Linux 环境中的分布式(远程)测试