JMeter WebDriver Sampler:JavaScript转Groovy脚本报错求助
解决JMeter WebDriver Sampler Groovy脚本类型不匹配错误
报错java.lang.IllegalArgumentException: argument type mismatch的核心原因是Groovy中传递给sendKeys()的参数类型不兼容。
原JavaScript脚本里,['adminstafftest1']这种数组会被Rhino引擎自动转换为Java可识别的CharSequence[]类型,但Groovy里的['adminstafftest1']是一个List对象,和Selenium sendKeys()方法要求的CharSequence或CharSequence[]类型不匹配。
修正后的Groovy脚本(两种可选写法)
写法1:直接传递字符串(推荐,更简洁)
import org.openqa.selenium.By; 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();
写法2:显式转换为CharSequence数组
如果需要传递多段输入或特殊按键组合,可以把List转为Java数组:
import org.openqa.selenium.By; def user = WDS.browser.findElement(By.id('loginUserName')); user.sendKeys(['adminstafftest1'] as CharSequence[]); def pass = WDS.browser.findElement(By.id('loginPassword')); pass.sendKeys(['STuser1225'] as CharSequence[]); def login = WDS.browser.findElement(By.id('loginSubmit')); login.click();
补充说明
Selenium的sendKeys()方法支持两种参数形式:
- 单个
CharSequence(比如普通字符串) CharSequence[]数组(用于多段内容输入或模拟特殊按键,比如Keys.ENTER)
Groovy中直接传递字符串的写法,和原JavaScript脚本的执行效果完全一致,是最简便的修正方式。
内容的提问来源于stack exchange,提问作者Ajith R
相关产品推荐
相关产品推荐

