【发布时间】:2015-08-25 21:30:30
【问题描述】:
我们正在尝试对混合 Android 应用进行自动化测试,但我们被困在日期选择器上。我们想将日期选择器中的值更改为特定日期(六月 -> 五月)。因此,我们检索了 EditText 元素并尝试更改文本。
我们基本上尝试了2种可能:
- 直接使用 sendKeys() 设置文本;
- 然后先选择所有文字再设置文字
使用第一个选项 appium 告诉我们无法完全删除文本(使用 appium 1.4.0,sendKeys 应该清除编辑文本)。相反,前 2 个字符被删除,我们被字符“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 上下文并在两者之间进行切换。
【问题讨论】:
标签: javascript android node.js datepicker appium