我一直试图在量角器中运行这段代码,但我一直收到这个错误,而且我也找不到一种方法来获取anpr_box_input文本值。
值: ManagedPromise::871 {[PromiseStatus]:"pending"} failed -当屏幕包含as ANPR request Suite failed: ANPR屏幕内容时,应具有有效的车牌
Chrome版本: 58.0.3029.110 (64位)依赖关系:"protractor":"5.1.2","jasmine-core":"~2.4.1","karma-jasmine":"^1.1.0","karma-jasmine-html-reporter":"^0.2.2","@types/jasmine":"2.5.36“
describe('ANPR屏幕内容‘,function () {
it('should have a valid license number plate when screen contains as ANPR request', function () {
var base_keyboard_ok = browser.driver.findElement(by.id('base-keyboard-ok'));
var anpr_box_input = browser.driver.findElement(by.className('anpr-box-input'));
//anpr_box_input.clear().then(function() { anpr_box_input.sendKeys('999'); }); tryed it before, didn't work
anpr_box_input.clear().then(function() { anpr_box_input.setAttribute("value", "459"); });
base_keyboard_ok.click();
/* didn't work
anpr_box_input.getText().then(function(text) {
console.log("AQUI: " + text);
});
*/
//console.log("Value: " + anpr_box_input.getAttribute('value')); didn't work
//working on..
anpr_box_input.getAttribute('value').then(function(text) {
console.log("Value: " + text);
});
//so i'll need something like
expect(anpr_box_input.text).toEqual("1234");
});});
发布于 2017-06-06 02:29:40
根据提供的信息和HTML,您不能使用
anpr_box_input.sendKeys('999');因为它不是input,所以它是<div>。
由于setAttribute不是有效的量角器命令,因此anpr_box_input.setAttribute("value", "459");也不起作用。您首先需要知道字段是如何工作的,我猜测它是一个<div>元素,它反映了包含原始值的另一个字段的值。您需要找到该字段并执行以下操作:
sendKeys()browser.driver.executeScript('argument[0].setAttribute("name", "value")', element(by.css('#selector').getWebElement()) 这就去办。
我还有一个关于你的代码的备注。基于您提供的代码,它看起来像是一个角度页面,但是您正在使用"vanila“webdriver命令来定位元素,为什么您不对element(by.css(''))等使用量角器语法呢?
发布于 2017-06-06 04:46:43
非常感谢wswebcreation,我会看看你刚才提到的vanila webdriver,但我刚刚找到了一个解决方案,如下所示:
it('should have a valid license number plate when screen contains as ANPR request', function () {
var buttonKey;
buttonKey = browser.driver.findElement(by.id('button_A'));
buttonKey.click();
browser.sleep(SLEEP_TIMER);
buttonKey = browser.driver.findElement(by.id('button_B'));
buttonKey.click();
var base_keyboard_ok = browser.driver.findElement(by.id('base-keyboard-ok'));
base_keyboard_ok.click();
var anpr_box_input = browser.driver.findElement(by.className('anpr-box-input'));
anpr_box_input.getAttribute('innerHTML').then(function(anpr) {
console.log("Plate: " + anpr);
expect(globalE2EFunctions.validateAnpr(anpr)).toBe(true);
});
});
module.exports = {
//Still need to implement regex plates validation according to each country patterns
validateAnpr: function(anpr) {
if(anpr != 'CANCEL' && anpr != 'DEL' && anpr != 'OK'){
return true;
} else{
return false;
}
}
}; https://stackoverflow.com/questions/44372081
复制相似问题