我有一个与 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)
有人可以帮我吗?
感谢您的支持。
问候,
查看 JavaDoc 了解您正在使用的 Selenium API 版本,并查看您尝试使用的函数接受哪些参数。
据我所知,WebElement.sendKeys()函数期望获得一个CharSequence,并且由于某种原因,您将一个ArrayList传递给它。
所以如果你改变这一行:
user.sendKeys(['adminstafftest1'])
对于这个:
user.sendKeys('adminstafftest1')
您的代码应该开始正常工作。
有关 JMeter 中 Groovy 脚本编写的更多信息:Apache Groovy:Groovy 的用途是什么?