应用程序:更改Android日期选择器值Javascript/NodeJS
我们正在尝试为混合Android应用程序自动化测试,但我们在日期选择器上被卡住了。我们希望将日期选择器中的值更改为特定日期(六月->五月)。因此,我们检索了EditText元素并尝试更改文本 我们基本上尝试了两种可能性:应用程序:更改Android日期选择器值Javascript/NodeJS,javascript,android,node.js,datepicker,appium,Javascript,Android,Node.js,Datepicker,Appium,我们正在尝试为混合Android应用程序自动化测试,但我们在日期选择器上被卡住了。我们希望将日期选择器中的值更改为特定日期(六月->五月)。因此,我们检索了EditText元素并尝试更改文本 我们基本上尝试了两种可能性: 使用sendKeys()直接设置文本 首先选择所有文本,然后设置文本 使用第一个选项appium告诉我们无法完全删除文本(使用appium 1.4.0,sendKeys应该清除编辑文本)。取而代之的是前两个被删除的字符,我们被困在“n.”这个字符里。我们还尝试在数字选择器上设置
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);
});
及
}))
我们还试图改变环境。为了检索元素,我们需要本机上下文,但要确保我们也尝试了WEBVIEW上下文并在两者之间切换。更改日期选择器文本分3步完成:
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);
});
driver.elementsByClassName("android.widget.EditText").then(function (elements) {
var promise = elements[0];
return driver.perform(new wd.TouchAction().longPress(promise));
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);
}