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版本的应用程序没有所有这些问题。