在Jmeter中使用Selenium查找网页中的元素

在Jmeter中使用Selenium查找网页中的元素,selenium,selenium-webdriver,jmeter,jmeter-5.0,xpath,Selenium,Selenium Webdriver,Jmeter,Jmeter 5.0,Xpath,我想在Jmeter中使用SeleniumWebDriver进行测试。我使用.linkText查找一个元素,并断言该元素是否存在 var elements = WDS.browser.findElements(pkg.By.linkText("Tools")); eval(elements.length != 0); 但如果将“Tools”替换为任何其他字符串,如“asfasdsa”,它将返回True,并且我的测试通过了。在JMeter中,By.linkText似乎不起作用。

我想在Jmeter中使用SeleniumWebDriver进行测试。我使用.linkText查找一个元素,并断言该元素是否存在

var elements = WDS.browser.findElements(pkg.By.linkText("Tools"));
eval(elements.length != 0);
但如果将“Tools”替换为任何其他字符串,如“asfasdsa”,它将返回True,并且我的测试通过了。在JMeter中,
By.linkText
似乎不起作用。除了.id之外,还有其他方法可以在网页中查找元素吗

此外,这是验证元素是否存在的好方法吗?

您可以使用:

  • 使用
    text()

  • 使用
    contains()


Selenium工作正常,我不确定您试图对函数调用执行什么操作,它将返回
false
,但无法查看您在何处以及如何使用此值

如果您想在返回的元素数为0时使WebDriver采样器失败,则需要稍微不同地执行此操作,尤其是有条件地调用函数

建议的代码更改:

WDS.sampleResult.sampleStart()
WDS.browser.get('http://example.com')
var elements = WDS.browser.findElements(org.openqa.selenium.By.linkText('More information...'))
if (elements.length == 0) {
    WDS.sampleResult.setSuccessful(false)
    WDS.sampleResult.setResponseMessage('Failed to find any element matching the criteria')
}
WDS.sampleResult.sampleEnd()
只要您不将
更多信息…
更改为其他内容,上述代码就会通过


有关更多WebDriver采样器顶部和技巧的信息,请参见

谢谢,这很有效。但这个eval语句与assert不同。如果元素不存在,我希望测试失败。如何在Jmeter中实现类似的功能?是否有类似于assert的方法来验证元素是否存在?我希望在找不到元素时停止测试。您不能对元素数组使用“click()”函数,您需要选择其中一个元素,即
元素。获取(0)。click()
-将单击第一个元素,
元素。获取(1)。click()
将单击第二个,等等。有关Selenium的快速升级,请参阅,有关详细信息,请访问官方网站
var elements = WDS.browser.findElements(pkg.By.xpath("//*[contains(., 'Tools')]"));
eval(elements.length != 0);
WDS.sampleResult.sampleStart()
WDS.browser.get('http://example.com')
var elements = WDS.browser.findElements(org.openqa.selenium.By.linkText('More information...'))
if (elements.length == 0) {
    WDS.sampleResult.setSuccessful(false)
    WDS.sampleResult.setResponseMessage('Failed to find any element matching the criteria')
}
WDS.sampleResult.sampleEnd()