我正在尝试使用示例here通过Appium + Protractor
重构和运行混合应用测试
我的全球目标是为基于Appium + Protractor
的混合/本地应用创建测试框架
我的本地目标是了解如何集成Appium + Protractor
并选择最佳方法。
但是一开始我遇到了一个障碍,无法从元素中获取文本并与预期进行比较。我无法从WebView
元素获取文本并与默认方法elementByXpath.getText();
因此,我向file
添加了新测试it("equal text", function () {
return driver
.elementById('buttonStartWebviewCD')
.click()
.sleep(5000)
.contexts()
.then(function (ctxs) {
console.log(ctxs);
return driver.context(ctxs[ctxs.length - 1]);
})
.source().then(function (source) {
source.should.include('Prefered Car');
})
.elementById('name_input')
.clear()
.sendKeys('Andrey')
.sendKeys(wd.SPECIAL_KEYS.Return)
.sleep(2000)
.elementByXPath("//h2").getText()
.then(function(text) {
console.log(text);
});
});
我的here on stackoverflow发现了类似的情况 但这对我没有帮助。 错误:
driver.elementById(...)。click(...)。sleep(...)。contexts(...)。then(...)。source(...)。then(。 ..)。elementById(...)。clear(...)。sendKeys(...)。sendKeys(...)。sleep(...)。elementByXPath(...)。getText不是功能 在上下文。 (示例代码\ examples \ node \ android- webview.js:152:28) 在_fulfilled(样本- 代码\示例\节点\节点模块\ wd \节点模块\ q \ q.js:834:54) 在C:\ protractor \ sample-code \ sample- 代码\示例\节点\节点模块\ WD \节点模块\ q \ q.js:863:30 在Promise.promise.promiseDispatch(示例- 代码\示例\节点\节点模块\ wd \节点模块\ q \ q.js:796:13) 在C:\ protractor \ sample-code \ sample- 代码\示例\节点\节点模块\ WD \节点模块\ q \ q.js:604:44 在runSingle(样本- 代码\示例\节点\节点模块\ wd \节点模块\ q \ q.js:137:13) 冲洗时(样品- 代码\示例\节点\节点模块\ wd \节点模块\ q \ q.js:125:13) 在process._tickCallback(internal / process / next_tick.js:61:11)
帮我解决这个问题