JMeter WebDriver Sampler:将 JavaScript 转换为 Groovy 脚本

问题描述 投票:0回答:1

我有一个与 JavaScript 完美配合的 WebDriver Sampler。需要将其转换为 Groovy。请在下面找到片段:

var pkg = JavaImporter(org.openqa.selenium)

var user = WDS.browser.findElement(pkg.By.id('loginUserName'))
user.sendKeys(['adminstafftest1'])

var pass = WDS.browser.findElement(pkg.By.id('loginPassword'))
pass.sendKeys(['STuser1225'])

var login = WDS.browser.findElement(pkg.By.id('loginSubmit'))
login.click()

请在下面找到 groovy 脚本:

import org.openqa.selenium.*;

def user = WDS.browser.findElement(By.id('loginUserName'));
user.sendKeys(['adminstafftest1']);

def pass = WDS.browser.findElement(By.id('loginPassword'));
pass.sendKeys(['STuser1225']);

def login = WDS.browser.findElement(By.id('loginSubmit'));
login.click();

但是,这会引发错误

javax.script.ScriptException: javax.script.ScriptException: java.lang.IllegalArgumentException: argument type mismatch
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:158)
at javax.script.AbstractScriptEngine.eval(Unknown Source)
at com.googlecode.jmeter.plugins.webdriver.sampler.WebDriverSampler.sample(WebDriverSampler.java:101)  

有人可以帮我吗?

感谢您的支持。

问候,

jmeter webdriver performance-testing
1个回答
0
投票

查看 JavaDoc 了解您正在使用的 Selenium API 版本,并查看您尝试使用的函数接受哪些参数。

据我所知,WebElement.sendKeys()函数期望获得一个CharSequence,并且由于某种原因,您将一个ArrayList传递给它。

所以如果你改变这一行:

 user.sendKeys(['adminstafftest1'])

对于这个:

user.sendKeys('adminstafftest1')

您的代码应该开始正常工作。

有关 JMeter 中 Groovy 脚本编写的更多信息:Apache Groovy:Groovy 的用途是什么?

© www.soinside.com 2019 - 2024. All rights reserved.