Angularjs 如何使用selenium单击表单中的类

Angularjs 如何使用selenium单击表单中的类,angularjs,forms,selenium,xpath,selenium-webdriver,Angularjs,Forms,Selenium,Xpath,Selenium Webdriver,我正在尝试编写一个测试用例,点击一个电子邮件和密码字段。棘手的是这些字段在表单中,所以我尝试使用xpath、cssSelector,甚至partialLinkText和Selenium仍然找不到元素 这是页面的代码: <form class="well form-inline ng-pristine ng-scope ng-invalid ng-invalid-required" ng-submit="login()" ng-hide="loggedInUser">

我正在尝试编写一个测试用例,点击一个电子邮件和密码字段。棘手的是这些字段在表单中,所以我尝试使用xpath、cssSelector,甚至partialLinkText和Selenium仍然找不到元素

这是页面的代码:

<form class="well form-inline ng-pristine ng-scope ng-invalid ng-invalid-required" ng-submit="login()" ng-hide="loggedInUser">
         <input class="ng-pristine ng-untouched ng-invalid ng-invalid-required" ng-model="user.email" val="Your email" placeholder="Email" required="" type="text"/>
         <input class="ng-pristine ng-untouched ng-valid" ng-model="user.password" val="password" placeholder="Password" type="password"/>
         <button class="btn btn-default" type="submit">Log in</button>
</form>

它们都不起作用。

最好使用“www.gragrantortest.org”来表示Angularjs。量角器使测试更容易。您是否尝试过使用
driver.findelelement(By.cssSelector(“input[ng model='user.email'])
?也许这是可行的。这里的问题是Selenium无法用这些特定的xpath识别唯一的元素。您的问题的解决方案可能是从HTML DOM中的某些标记开始查找那些“email”和“password”字段,您可以在更高的位置找到元素的不同id,然后遍历DOM以识别这些元素。您是否检查过此表单是否在iframe中?@Tom该选择器工作得很好!谢谢对于Angularjs,最好使用“www.gragratortest.org”。量角器使测试更容易。您是否尝试过使用
driver.findelelement(By.cssSelector(“input[ng model='user.email'])
?也许这是可行的。这里的问题是Selenium无法用这些特定的xpath识别唯一的元素。您的问题的解决方案可能是从HTML DOM中的某些标记开始查找那些“email”和“password”字段,您可以在更高的位置找到元素的不同id,然后遍历DOM以识别这些元素。您是否检查过此表单是否在iframe中?@Tom该选择器工作得很好!谢谢
driver.findElement(By.xpath("//input[@class = 'ng-pristine ng-untouched ng-invalid ng-invalid-required']"));

driver.findElement(By.xpath("//input[@ng-model = 'user.password']"));

driver.findElement(By.cssSelector("ng-pristine ng-untouched ng-invalid ng-invalid-required"));