Jmeter WebDriver采样器无法映射列表<;WebElement>;到driver.findElements(定位器)方法 Jmeter版本4.0 r1823414 Selenium/WebDriver支持插件版本2.3 java版本1.8.0_161
在使用JMeterWebDriver采样器时,它所能做的事情(快速创建用于UI/性能测试的脚本)给我留下了深刻的印象。然而,我无法利用Jmeter WebDriver采样器无法映射列表<;WebElement>;到driver.findElements(定位器)方法 Jmeter版本4.0 r1823414 Selenium/WebDriver支持插件版本2.3 java版本1.8.0_161,java,list,plugins,jmeter,Java,List,Plugins,Jmeter,在使用JMeterWebDriver采样器时,它所能做的事情(快速创建用于UI/性能测试的脚本)给我留下了深刻的印象。然而,我无法利用List(来自java.util)界面在页面上查找多个web元素。正如每个WebDriver插件教程中所建议的那样,我导入了必要的名称空间java.util.*和java.lang.util.* 日志查看器中出现错误 messageERROR c.g.j.p.w.s.WebDriverSampler:在文件中:内联计算:`import java.util。;导入j
List
(来自java.util
)界面在页面上查找多个web元素。正如每个WebDriver插件教程中所建议的那样,我导入了必要的名称空间java.util.*
和java.lang.util.*代码>
日志查看器中出现错误
messageERROR c.g.j.p.w.s.WebDriverSampler:在文件中:内联计算:`import java.util。;导入java.lang。;导入org.openqa.selenium.*;导入组织…“”在第57行第38列遇到“=”
我的第57行是这样的
List<WebElement> deleteLinks = WDS.browser.findElements(By.xpath("${myEnumeratorDeclaredVariable}"));
List deleteLinks=WDS.browser.findelelements(By.xpath(${myEnumeratorDeclaredVariable}));
根据方法findelelements(By)
的签名是java.util.List
,我今天的问题是:WebDriver sampler插件是否有任何专门设计的限制,禁止使用本机java世界中的某些接口和类
我可以像往常一样在采样器中创建类和方法吗?请在遇到这些问题之前通知他人
p.S.Dmitri的回答被接受。请阅读他回答下面的评论。如果您计划使用Java作为WebDriver sampler的编程语言,请注意它是对Java的BeanShell解释,而不是普通Java本身。要了解该语言的更多现代功能(版本6、7和8),请选择groovy,因为它支持99%的现代Java代码 如果使用最新版本的Webdriver Sampler,则需要选择Groovy才能使用所使用的语法
否则,默认情况下它将使用Javascript Rhino
如果问题仍然存在,请显示所有代码。取决于您使用的语言:
对于默认JavaScript,您需要使用如下JavaScript语法:
var deleteLinks = WDS.browser.findElements(org.openqa.selenium.By.xpath("${myEnumeratorDeclaredVariable}"));
演示:
在Java的情况下,您不会得到“香草”Java,您会得到不支持的解释器,因此您需要删除它,如:
List deleteLinks = WDS.browser.findElements(org.openqa.selenium.By.xpath("${myEnumeratorDeclaredVariable}"));
不要在脚本中引用JMeter函数和/或变量,如“${myEnumeratorDeclaredVariable}”
,而应选择WDS.vars
,如:
List deleteLinks = WDS.browser.findElements(org.openqa.selenium.By.xpath(WDS.vars.get("myEnumeratorDeclaredVariable")));
更多信息:为什么要否决投票?谢谢Dmitri,我对它说的话感到困惑BeanShell理解标准Java语句、表达式和方法声明。语句和表达式都是Java方法中常见的东西,比如变量声明和赋值、方法调用、循环和条件。“所以我想我可以很容易地使用菱形操作符和循环。但似乎这两个版本都不能在WebDriver sampler脚本窗口中使用。Beanshell于2005年发布,因此它几乎支持JavaSE5.0中的所有内容。Diamond操作符于2011年在Java 7中引入,因此Beanshell不支持它。如果您想使用现代java特性,考虑切换到完全支持基本JVM语法的方法,并在其上感谢德米特里的支持。在这些行中,“99%的情况下有效的Java代码将是有效的Groovy代码”。这是否意味着我可以在WebDriver采样器中创建类和方法?我可能低估了Groovy作为一种选择,因为我认为这是一种完全不同的编程语言,通常需要一段时间才能熟悉。感谢对Dmitri的支持。正如您所建议的,我在Jmeter中选择了Groovy脚本语言类型,创建了一个包含大量方法的类,并在尝试运行该类时收到了“WebDriverSampler:unknown protocol:data”错误消息。我的类结构是典型的Java类,上面是导入语句,下面是类声明,类字段声明和方法与往常一样。你知道这个错误消息可能意味着什么吗?谢谢你的支持。