我想在密码字段中输入一些值但是当我找到元素并输入一些值时,它显示元素不可见错误。下面是密码field.i的html代码已经尝试过xpath,css,id和name,即使我已经做了等待条件但是它没有工作。
这是我试过的
browser.sleep(3000);
AGP.AgtPassword.sendKeys(Login.AgPassword);
var msg = AGP.pswmsg1.getText();
if(msg == Login.msg1 || Login.msg2)
{
AGP.AgtPassword.clear();
AGP.AgtPassword.sendKeys(Login.Ag1Password);
}
<input type="password" id="password" name="agtPassword" class="form-control text-input ng-pristine ng-invalid ng-invalid-required ng-valid-pattern ng-valid-minlength ng-valid-maxlength ng-touched" ng-model="agentPassPhrase" ng-minlength="6" ng-maxlength="20" ng-pattern="/(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z])/" placeholder="Password" required="" style="">
答案 0 :(得分:2)
这是猜测,但是这样的问题的原因之一是有多个元素与您的定位器匹配,并且您使用的是不可见的元素,而不是您实际想要发送密钥的元素。在这种情况下,您需要改进定位器。例如,而不是:
element(by.id("password"));
您可能需要让它搜索特定元素中的密码字段,例如:
element(by.css("form#myform password"));
请注意,id
只应该在整个页面中是唯一的,但情况并非总是如此。
答案 1 :(得分:1)
我通过以下代码设法解决了这个问题。
this.AgtPassword = element.all(by.css(data.AgentPassword))。get(2);