testing包含带有Appium的WKWebView的iOS应用程序时,行为不一致
我正在为使用WKWebviews显示一些数据的iOS应用程序创build自动化testing。 用户将查询input到本地文本字段中,并在web视图中显示结果。 问题是,当检查HTML中的一些预期结构时,我得到了不一致的行为。
这是我期待的HTML:
<div id="results"> <div class="frame"> <div class="card"> // here my data </div> </div> </div>
在Appium
我检查了这三个div存在的非常简单的情况如下:
it("should display results inside the web view", function () { return driver .waitForElementByName("Address and Search") .sendKeys("search query") .sleep(1000) .contexts().then(function (contexts) { // get list of available views. Returns array: ["NATIVE_APP","WEBVIEW_1"] return driver.context(contexts[1]); // choose the webview context }) .waitForElementById("results", 60000) .waitForElementByCss(".frame", 60000) .waitForElementByCss(".card", 60000) .sleep(3000) });
每次运行testing时,我都会得到不同的结果:有时它会查找所有元素,有时只find第一个元素( waitForElementById
),然后无法获得更多元素。
这是我的configuration:
exports.ios93 = { browserName: '', 'appium-version': '1.4.13', platformName: 'iOS', platformVersion: '9.3', deviceName: 'iPhone 6', app: undefined // will be set later };
我试图通过执行以下操作来解决问题:
切换到WEBVIEW
后添加延迟如下:
.context('WEBVIEW_1') .sleep(25000)
改变窗口如下:
.context('WEBVIEW_1') .windowHandles() .then(function(handles) { driver.window(handles[handles.length-1]) })
但是这没有任何影响。
请注意,使用Appium
进行testing时,Android版本的应用程序没有所有这些问题。