现在是在native中进入webview的测试。比如我想测试一个选择城市的组件:主要思路是模拟用户的一系列操作,然后看测试结果和预期是否一致。首先通过控制台查看对应的DOM节点,使用macaca提供的API获取对应的DOM元素然后触发用户操作。REPL环境下仍然执行以下操作:driver.webview().elementByCssSelector('.location-city.input-tips').tap()//首先调用城市选择组件,见下图①.sleep(500)。elementByCssSelector('.province-list.list-item:nth-child(3)').tap()//点击省份第三个元素,见下图②.sleep(500).elementByCssSelector('.city-list.list-item:nth-child(4)').tap()//点击城市第四个元素,见下图③.sleep(500).elementByCssSelector('.area-list.list-item:nth-child(6)').tap()//点击区域第6个元素,见下图④.sleep(500).elementByCssSelector('.location-city.input-tips')。文本()。then(function(value){//可以在控制台看到选中城市内容的输出,见下图⑤console.log(value);});图①:图②:图③:图④:图⑤:图⑥:我们可以看到当前函数按照我们的预期执行了。现在我再测试另一种情况:如果选择了省和地区,但没有选择城市,会出现一个弹窗。driver.webview().elementByCssSelector('.location-city.input-tips').tap()//重新唤起城市选择组件,见下图.sleep(500).elementByCssSelector('.province-list.list-item:nth-child(2)').tap()//重新选择省.sleep(500).elementByCssSelector('.area-list.list-item:nth-child(3)').tap()//重新选择区域//这时候会出现一个弹窗,见下图图⑦:图8:这时候功能也正常了。当然,在测试脚本中写了***的时候,添加断言相关的内容就相对容易一些。我在写webview测试脚本的时候也遇到了很多问题。例如,出于安全考虑,native限制了input[type="file"]唤起native上传文件组件,滑动等一些操作测试难度大等。别紧张。
