使用量角器的密码字段的元素不可见错误

element not visible error for password field using protractor

我想在密码字段中输入一些值,但是当我找到元素并输入一些值时,它显示元素不可见错误。以下是密码 field.i 的 html 代码已通过 xpath、css、ID 和名称尝试过的内容,即使我已经设置了等待条件,但它不起作用。

这是我试过的

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="">

这是一个猜测,但出现这种问题的原因之一是有多个元素与您的定位器匹配,而您使用的是不可见的元素,而不是您实际想要将密钥发送到的元素.在这种情况下,您需要改进定位器。例如,而不是做:

element(by.id("password"));

您可能需要让它在特定元素内搜索密码字段,例如:

element(by.css("form#myform password")); 

请注意,ids 只应该在整个页面中是唯一的,但情况并非总是如此。

我是如何通过以下代码设法解决这个问题的。

this.AgtPassword = element.all(by.css(data.AgentPassword)).get(2);