如何使用 webdriver jmeter 脚本验证文本框在页面上是否可见?

How to verify Textbox is visible on page using webdriver jmeter script?

测试场景:

如果验证码文本框存在(可见),则输入一些值。(注意:- 如果请求来自同一位置,您只能看到验证码文本框)

验证码 div 仅在请求来自同一位置时才会显示。(直到那时验证码 div 甚至不存在于 HTML 代码中)

HTML代码:-

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>

<h1>This is a Heading</h1>
<p>This is a paragraph.</p>
<div class="captcha captcha-container clearfix" id="captcha"><div class="captcha-image"></div><div class="captcha-inputs clearfix"><div class="textInput captcha captcha-container" id="captchadiv"><div class="fieldWrapper"><label for="captchaCode" class="fieldLabel">Enter code</label><input id="captchaCode" name="captcha" type="text" class="hasHelp  validateEmpty  " value="" autocomplete="off" placeholder="Enter code"></div><div class="errorMessage" id="captchaErrorMessage"><p class="emptyError hide">Required</p></div></div><div class="refresh"><a href="" class="captchaRefresh buttonLight onboardingSpritePseudo scTrack:login-click-reload-captcha imageLink"></a></div></div></div>
</body>
</html>

代码:- 我正在使用以下登录名,但发现 NoSuchelement 错误

var isEleDis = WDS.browser.findElement(pkg.By.id('captchaCode'))
if(isEleDis.isDisplayed()){
        isEleDis.click()
        isEleDis.sendKeys(['captcha'])
    }

错误:- 未找到任何元素。 (因为 id=captchacode 还没有出现在 html 中)

WebDriver Sampler 不提供 JavaScript API,它只是 calls Selenium Java libraries methods from JavaScript language so WebElement is not a promise, it is a Java WebElement 因此您不能调用 .then,您需要重新设计您的方法,例如:

var textField = WDS.browser.findElement(pkg.By.id('captCode'))

if (textField.isDisplayed()) {      
    textField.click()
    textField.sendKeys(['hello'])        
}

更多信息: