sendKeys 和 click() 不起作用.无法获取元素,我正在使用量角器JavaScript代码


<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)您使用的是带有大写BBy.css(),而不是带有小写bby.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');
});

只是一些猜测。

最新更新