我需要验证,用户名和&密码字段。密码或用户名不正确时。我想验证显示的错误消息
以下显示了HTML。 class显示label label-danger,但是如果我按类使用findelement它就不起作用,它会抛出一个没有元素的异常。
<div>
<div class="form-group">
<label for="password">Password</label>
<input id="loginform-password" class="form-control" type="password" value="ssssssssssss" name="LoginForm[password]">
<div class="clear"></div>
<div class="label label-danger">Incorrect username or password.</div>
</div>
<input id="loginform-type" type="hidden" value="company"name="LoginForm[type]">
<button class="nd-btn" type="submit">LOGIN</button>
</div>
这是我尝试但失败的原因:
driver.findElement(By.className("label label-danger"));
或
driver.findElement(By.linkText("Incorrect username or password."));
我的代码就是这个
WebDriver driver = new FirefoxDriver();
// To explicitly wait for 10 seconds
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// Navigate to Required URL
driver.get("http://ndustrious.com/");
// Maximize the Window
driver.manage().window().maximize();
// To explicitly wait for 5 seconds
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// click on EXECEPTIONAL ORGANIZATIONS
driver.findElement(By.cssSelector("a[href*='/site/company-login']")).click();
driver.findElement(By.id("loginform-username")).sendKeys("abc");
driver.findElement(By.id("loginform-password")).clear();
WebElement labelElement = driver.findElement(By.xpath("//div[@class = 'label label-danger']"));
labelElement.getText();
答案 0 :(得分:1)
By.className
不适用于多个类属性,您需要使用xpath:
WebElement labelElement = driver.findElement(By.xpath("//div[@class = 'label label-danger']"));
您的第二种方法也不起作用,因为该文字不是链接元素的文本,而是div
的文本
如果你想打印文字:
labelElement.getText();
答案 1 :(得分:1)
如果要通过By.classname()映射获取WebElement,则只能传递一个类。最好通过
来调用它driver.findElement(By.className("label-danger"));
答案 2 :(得分:0)
你能试试吗
driver.findElement(By.xpath(&#34; // DIV [含有(文本(),&#39;不正确&#39)]&#34);
答案 3 :(得分:0)
如果要在定位器中使用多个CSS类名,则需要使用CSS选择器。
driver.findElement(By.cssSelector("div.label.label-danger")).getText();