[Appium] 使用Appium过程中遇到的各种坑

以下问题都是以ios为背景:

1.

问题:

Case: 在页面S1上,点击元素A后,判读B元素是否出现。

Detail:一开始通过Appium Inspector, 可以找到B元素,所以直接取该元素的name, 在代码中写入findElement(By.name("NameOfB"));

但是case始终运行失败, 之后打开Appium Inspector, 通过name查找该元素, 发现inspector定位到了另一个非此名的元素上。即使重新刷新页面去获取新的dom, 也不起作用。

解决方案:

这种情况非常诡异, 目前不知道是不是Appium的bug。可换一种定位方式,如使用findElement(By.UIAutomation("XXX"))。

2. 

问题:

与web和android相比,在ios上使用appium做自动化速度非常的慢。 

解决方案:

  • 不要使用xpath定位方式。
  • 尽量少用findElement, 如果该值需要在之后继续使用,可以把它赋值给一个变量。 也就是说尽可能减少与Appium server的交互。

3. 

问题:

因为元素必须先出现在页面上,才可以使用click/tap方法。所以这里先使用isDisplay()方法判读该元素出现, 然后点击该元素。但是测试下来,仍有可能即使isDisplay()返回的结果为true, 该元素还会因为不可见而点击报错。

解决方案:

虽然该元素的isDisplay()返回了true,但是该元素的中心点可能仍然不在屏幕上。 tap方法其实点击的就是元素的中心点。可以使用swipe方法再滑动一下屏幕让这个元素完全显示在屏幕上。

posted @ 2016-05-31 20:05  飞雪天影  阅读(15811)  评论(1编辑  收藏  举报