0

如何使用 selenium webdriver 中的 xpath 验证仅在不正确的数据输入(文本框之前的标签,例如:登录场景)上启用的不可见对象。

如果所有标签都显示错误消息(例如用户名标签和密码标签),我能够验证和捕获文本(错误消息)。xpath 用户名:.// [@id='loginForm']/p[1]/p/label xpath 密码:.// [@id='loginForm']/p[2]/p/label

但是,如果我输入正确的用户名,Webdriver 会继续在 Xpath 中搜索 username(.//*[@id='loginForm']/p[1]/p/label) 并且没有响应。

HTML 仅在出现错误时可见: label class="error" generated="true" for="userName" label class="error" generated="true" for="passwordField

谁能帮我这个?

4

1 回答 1

0

使用 WebDriverWait:

WebDriverWait waiting = new WebDriverWait(driver, 15, 100);
waiting.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("//*[@id='loginForm']/p[1]/p/label")));

上面将创建一个 Web 驱动程序等待对象,该对象将等待长达 15 秒(每 100 毫秒检查一次条件)以使元素变得不可见。如果在触发代码行时元素已经不可见,这将立即消失。

根据以下评论进行编辑

如果你只是想找出一个元素是否存在,你可以这样做:

List<WebElement> labelCount = driver.findElements(By.xpath("//*[@id='loginForm']/p[1]/p/label"));

如果大小为 0,则标签不存在,否则存在,例如:

if(labelCount.size() == 0){
    //Get tab text
} else {
    //Enter second field data
}
于 2013-02-21T17:11:07.697 回答