<input class="form-control validation-field ng-dirty ng-touched ng-invalid" placeholder="Password" type="password">
我使用它来获取元素,但它不发送密钥,也不显示任何错误消息。我已经尝试过Firefox和谷歌浏览器。
element.all(By.css('.form-control.validation-field.ng-dirty.ng-valid.ng-touched')).sendKeys('sample code');
这是我的.js文件
示例配置文件。
exports.config = {
directConnect: true,
// Capabilities to be passed to the webdriver instance.
capabilities: {
'browserName': 'firefox'
},
// Framework to use. Jasmine is recommended.
framework: 'jasmine',
// Spec patterns are relative to the current working directory when
// protractor is called.
specs: ['example_spec.js'],
// Options to be passed to Jasmine.
jasmineNodeOpts: {
defaultTimeoutInterval: 100000
}
};
如果我使用get(0)
或get(1)
它的显示错误,无法使用此 css 找到.为什么?
看起来你的 css 不正确,而不是 .ng-valid,你应该放置 .ng-invalid
element.all(By.css('.form-control.validation-field.ng-dirty.ng-invalid.ng-touched')).sendKeys('sample code');
不鼓励使用类名,因为它们可能会在不久的将来发生变化。
假设您正在尝试输入用户名,前面的节点将包含可见文本(即用户名或其他内容)
尝试找到该节点,然后跟随输入元素。
例:
//*[contains(text(),"User Name")]/following-sibling::input
在尝试我的建议之前,请检查Sanja Paskova
的答案。
我可以在这里看到一些潜在的问题:
1)您使用的是带有大写B
的By.css()
,而不是带有小写b
的by.css()
。我不知道是不是一样。
2)element.all()
返回ElementArrayFinder
而不是ElementFinder
。您应该使用element.all(by.css('foo')).first().sendKeys('bla');
或element(by.css('foo')).sendKeys('bla');
。
3) 如果不是第 1 点和第 2 点,请尝试在发送密钥之前单击输入:
var input = element(by.css('.form-control.validation-field.ng-dirty.ng-valid.ng-touched'));
input.click().then(function() {
input.sendKeys('sample code');
});
只是一些猜测。