Appium: Change Android DatePicker value Javascript/NodeJS
Appium: Change Android DatePicker value Javascript/NodeJS
我们正在尝试自动化测试的混合Android应用程序,但我们卡住了日期选择器。我们希望将日期选择器中的值更改为特定日期(6月-> 5月)。因此,我们检索了EditText元素并尝试更改文本。
我们基本上尝试了两种可能性:
- 直接使用sendKeys()设置文本;
- 首先选择所有文本然后设置文本
使用第一个选项appium告诉我们文本不能完全删除(使用appium 1.4.0, sendKeys应该清除编辑文本)。相反,前两个字符被删除,我们被字符"n"困住了。我们还尝试在数字选择器上设置文本(通过使用sendKeys())(更改android.widget.EditText -> android.widget.NumberPicker)。
driver.elementsByClassName("android.widget.EditText").then(function (promisses) {
var promise = promisses[0];
return promise.sendKeys('May').setImplicitWaitTimeout(3000);
});
对于第二个选项,我们尝试使用触摸操作(wd.TouchAction)长按输入字段并选择整个文本。然后我们使用sendKeys覆盖所选文本。这个选项的问题是使用长按不起作用。
driver.elementsByClassName("android.widget.EditText").then(function (elements) {
var promise = elements[0];
var action = new wd.TouchAction();
action.press({el: promise}).wait(5000).release();
return driver.performTouchAction(action);
});
和
driver.elementsByClassName("android.widget.EditText").then(function (elements) {
var promise = elements[0];
return driver.perform(new wd.TouchAction().longPress(promise));
});
我们也试过改变上下文。为了检索元素,我们需要NATIVE上下文,但为了确保这一点,我们也尝试了WEBVIEW上下文并在两者之间切换。
更改日期选择器文本分为3步:
- 长按(var action)选择文本
- 用键事件删除文本(deviceKeyEvent(67))
- 设置您想要的文本(setText(text)/sendKeys(text))
检索编辑文本元素是通过类名这是在android 'android.widget. edittext '完成的。为了检索元素,你也应该在Native上下文中。
也应该可以直接在数字选择器上执行,因为它的行为就像编辑文本一样。但我们没有尝试过。
var els;
return driver
.elementsByClassName('android.widget.EditText')
.then(function (_els) {
els = _els;
var el = els[0];
return setDatePickerText(driver, el, month);
})
.then(function () {
var el = els[1];
return setDatePickerText(driver, el, year);
});
function setDatePickerText(driver, el, text) {
var pressDuration = 1000;
var action = (new wd.TouchAction()).press({el: el}).wait(pressDuration).release();
return driver
.performTouchAction(action)
.deviceKeyEvent(67)
.then(function () {
return el;
})
.setText(text);
}
相关文章:
- 需要收集Javascript nodejs异步调用
- 如何删除列表中的对象?Javascript nodejs和下划线
- 在JavaScript/NodeJS中压缩十六进制字符串
- 在对javascript/NodeJS应用程序进行原型设计时,应该测试什么,不应该测试什么
- 如何在函数 JavaScript/NodeJS 中返回函数
- 我们可以在 JavaScript/NodeJS 中将键字符串声明为最终变量吗?
- 使用 javascript/nodejs 创建动态方法
- mqtt messaging.client javascript nodejs
- 使用 Javascript (NodeJS) 进行字符串操作
- Javascript / NodeJs - fs.readFile 在读取文件之前使用回调
- Javascript(NodeJS)回调范围
- Javascript/NodeJS是创建单例对象的最佳方式
- 从html javascript nodejs中提取数据
- 在javascript/nodejs中搜索并替换所有内容
- 为URI(JavaScript/NodeJS)生成唯一字符串
- Javascript NodeJS ES6组合/排列算法
- javascript/nodejs:在大的、分块的数据集上同步调用一组类似的异步函数会导致内存泄漏
- 在JavaScript(NodeJS)中从MongoDB ObjectId中获取唯一的int
- 需要在服务器中发送数据和访问数据的帮助.我想使用JavaScript(nodejs)来实现这一点
- 如何避免javascript(nodejs)中的大量if-else