我找不到电子邮件和密码的
err_message
元素。我收到一个错误:
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"body > div:nth-child(1) > div:nth-child(4) > form:nth-child(2) > div:nth-child(1) > p:nth-child(3)"}
试过:
.form-signin .form_item .err_message:nth-child(1), .err_message:nth-of-type(1)
HTML 快照:
一个从 body 元素开始并使用
>
来识别每个后代直到目标的 CSS 选择器,正如您所做的那样,不是 一个好主意,因为一旦您在文档中移动内容,选择器将中断。相反,使用类或 id 直接定位元素。
在您的情况下,代码中唯一的 id 在输入字段上,因此您可以将它们与 adjacent sibling combinator 结合使用以定位错误消息元素:
电子邮件字段的错误消息可以选择以下任何一项:
#email + p
#email + .err_message
#email + p.err_message
密码字段的错误消息可以选择以下任何一项:
#password + p
#password + .err_message
#password + p.err_message
要找到
<p>
元素,您可以使用 Email Address 和 Password 字段作为通过唯一属性识别的参考,您可以使用以下 css_selector:
<p>
电子邮件地址 字段的标签:
WebElement element = driver.findElement(By.cssSelector("div.login_page form.form-signin div.form_item input#email +p"));
<p>
密码 字段的标签:
WebElement element = driver.findElement(By.cssSelector("div.login_page form.form-signin div.form_item input#password +p"));