WDS如何使用其他采样器中的变量?

时间:2018-08-30 15:19:38

标签: selenium jmeter webdriver

我有Sampler,在其中我要切换到子窗口,但是我需要保存主窗口的句柄才能在另一个示例中切换到它: 请看截图

具有保存的主窗口句柄的采样器: enter image description here

如何在下一个采样器中调用它?

enter image description here

WDS.browser.switchTo()。defaultContent()导致错误:

ERROR c.g.j.p.w.s.WebDriverSampler: no such window: window was already closed

示例代码:

WDS.sampleResult.sampleStart()
var handles = WDS.browser.getWindowHandles()
var mainWindow = WDS.browser.getWindowHandle()
while (handles.size()!=2){
    handles = WDS.browser.getWindowHandles()
    WDS.log.info(handles.size())
}
var iterator = handles.iterator()
var counter = 1;
while (iterator.hasNext())
{
   var handle = iterator.next()
   WDS.browser.switchTo().window(handle)
   WDS.log.info('Window ' + counter + ' title = ' + WDS.browser.getTitle())
   counter++;

}
WDS.sampleResult.sampleEnd()

样本B代码:

WDS.sampleResult.sampleStart()
var timeunit = java.util.concurrent.TimeUnit 
WDS.browser.manage().timeouts().pageLoadTimeout(30, timeunit.SECONDS)
var pkg = JavaImporter(org.openqa.selenium, org.openqa.selenium.support.ui)
var timeunit = java.util.concurrent.TimeUnit 
var wait = new pkg.WebDriverWait(WDS.browser, 3000)
var ssn = ("078-05-"+WDS.args[0])

//WDS.browser.switchTo().defaultContent()
WDS.browser.switchTo().window(variable mainWindow from SwitchToWorkFlowWindow sampler)

WDS.sampleResult.sampleEnd()

1 个答案:

答案 0 :(得分:1)

WDS.vars的简写,基本上是JMeterVariables类的一个实例,因此您可以使用它将数据从一个采样器传递到另一个采样器,例如:

  1. 在第一个采样器中:

    var foo = 'bar'
    WDS.vars.put('foo', foo)
    
  2. 在第二个采样器中:

    var foo = WDS.vars.get('foo')
    WDS.log.info('Foo value is: ' + foo)
    

    JMeter WebDriver Pass Variables between requests

您可以在The WebDriver Sampler: Your Top 10 Questions Answered指南中找到有关WebDriver Sampler的高级用法的更多信息