Ionic framework 输入类型为带Chrome的数字时如何使用sendkeys
HTMLIonic framework 输入类型为带Chrome的数字时如何使用sendkeys,ionic-framework,input,protractor,numbers,sendkeys,Ionic Framework,Input,Protractor,Numbers,Sendkeys,HTML <ion-input [(ngModel)]="login.username" ngControl="username1" type="number" #username1="ngForm" id="userName" required> </ion-input> 已找到元素,但未在字段中输入文本。如果我将元素更改为type=“text”,则量角器命令有效。页面视图为“e”,无法清除 其次,如果我像这样发送字符串:“we2124will”,实际发送的数据是“2
<ion-input [(ngModel)]="login.username" ngControl="username1" type="number" #username1="ngForm" id="userName" required>
</ion-input>
已找到元素,但未在字段中输入文本。如果我将元素更改为type=“text”,则量角器命令有效。页面视图为“e”,无法清除
其次,如果我像这样发送字符串:“we2124will”,实际发送的数据是“2124”,来自getAttribute(“value”)的结果是2124
第三,即使我将sendKeys更改为number,结果也不是完整的数字字符串。例如:
失败:
1) Login page should input username and password
Message:
Expected '125' to equal '12345'.
Stack:
Error: Failed expectation
缺少一些数字。作为一种解决方法,您可以引入一个可重用函数,通过在发送每个键之间添加延迟来执行慢速类型 首先,添加一个,将其放入
onPrepare()
:
然后,创建一个可重用函数:
function slowSendKeys(elm, text) {
var actions = browser.actions();
for (var i = 0, len = text.length; i < len; i++) {
actions = actions.sendKeys(str[i]).sleep(300);
}
return actions.perform();
}
作为一种解决方法,您可以引入一个可重用函数,通过在发送每个键之间添加延迟来执行慢速类型 首先,添加一个,将其放入
onPrepare()
:
然后,创建一个可重用函数:
function slowSendKeys(elm, text) {
var actions = browser.actions();
for (var i = 0, len = text.length; i < len; i++) {
actions = actions.sendKeys(str[i]).sleep(300);
}
return actions.perform();
}
您使用的量角器是什么版本的 不确定这是否是问题所在,但请尝试通过ng模型获取元素
var elem = element(by.model('login.username'));
elem.sendKeys('error');
expect(elem.getAttribute("value")).toEqual("error");
elem.clear();
elem.sendKeys('12345');
expect(elem.getAttribute("value")).toEqual("12345");
您使用的量角器是什么版本的 不确定这是否是问题所在,但请尝试通过ng模型获取元素
var elem = element(by.model('login.username'));
elem.sendKeys('error');
expect(elem.getAttribute("value")).toEqual("error");
elem.clear();
elem.sendKeys('12345');
expect(elem.getAttribute("value")).toEqual("12345");
由于您使用的是
,因此实际的HTML
标记将嵌套在其中,并且它没有id属性。其结果是可能会选择错误的元素
尝试以下操作以获取嵌套的输入标记:
let username = element(by.id('userName')).all(by.tagName('input')).first();
username.sendKeys('fakeUser');
这对我很有用。因为您使用的是
,所以实际的HTML
标记将嵌套在其中,并且不会有id属性。其结果是可能会选择错误的元素
尝试以下操作以获取嵌套的输入标记:
let username = element(by.id('userName')).all(by.tagName('input')).first();
username.sendKeys('fakeUser');
这对我来说很有效。这在Firefox和Chrome中的表现是否相同?另外,如果您尝试使用最新的量角器版本会怎么样?我只使用Chrome进行测试。量角器版本是3.3.0。这在Firefox和Chrome中的表现是否相同?另外,如果您尝试使用最新的量角器版本会怎么样?我只使用Chrome进行测试。量角器版本是3.3.0。我使用了我以前尝试过的量角器3.3.0.model,但失败的原因如下:`-失败:未知错误:angular不是(会话信息:chrome=49.0.2623.112)(驱动程序信息:chromedriver=2.21.371459`我使用了我以前尝试过的量角器3.3.0.model,但失败的原因如下:`-失败:未知错误:angular不是(会话信息:chrome=49.0.2623.112)(驱动程序信息:chromedriver=2.21.371459`我对量角器不熟悉,有两件事我忘记了:1.我正在测试ionic 2 ans是否使用typescript。当我运行上述两个函数时,会发生以下故障:类型“ActionSequence”上不存在属性“sleep”。2.当我只使用第一行用法时,会发生以下故障:找不到元素using locator:By(css选择器,离子输入#用户名).你有什么建议吗?我是一个新来的量角器,有两件事我忘记了:1.我正在测试ionic 2 ans使用typescript。当我运行上面的两个函数时。发生这些故障:类型“ActionSequence”上不存在属性“sleep”。2.当我只使用第一行用法时,会发生以下故障:使用locat找不到元素或者:通过(css选择器,离子输入#用户名)。你有什么建议吗?