所以,这里有两个div
<div class="th_pr"><input id="user_email" class="accounts_input" type="text" size="30" placeholder="Email" name="user[email]"></input><p class="accounts_error_text" style="display: block;">
email is invalid
</p></div>
<div class="th_pr"><input id="user_password" class="accounts_input" type="password" size="30" placeholder="Password" name="user[password]" autocomplete="off"></input><p class="accounts_error_text" style="display: block;">
password can't be blank
</p></div>
我需要通过文本获取文本“电子邮件无效”和“密码不能为空”的元素,因为它会因输入而异。
我一直在尝试使用xpath完成此操作:
By.xpath("//p[contains(.,'email is invalid')]")
和
By.xpath("//p[contains(.,'password be blank')]")
但我一无所获。
resultEmail = ExpectedConditions.invisibilityOfElementLocated(By.xpath("//p[contains(.,'email is invalid')]")).apply(driver);
返回true,尽管元素可见。
请帮忙。
答案 0 :(得分:1)
试试xpath
//input[@id='user_email']/following-sibling::p
//input[@id='user_password']/following-sibling::p
然后你有
WebElement emailParagraph = driver.findElement(By.xpath("//input[@id='user_email']/following-sibling::p"));
System.out.println(emailParagraph.getText());
答案 1 :(得分:0)
您是否尝试在xpath中使用text()
方法?
driver.findElement(By.xpath("//p[contains(text(), 'email is invalid')]"));
而不是使用.
?
答案 2 :(得分:0)
请试试这个:
WebElement userEmailErrorMessage = driver.findElement(By.cssSelector("div[class=\"th_pr\"]:nth-child(1) > p"));
WebElement userPasswordErrorMessage = driver.findElement(By.cssSelector("div[class=\"th_pr\"]:nth-child(2) > p"));
使用这些元素,您将能够读取相应输入控件的错误消息。