0929Appium app自动化测试经验分享

今早临时更改十一回老家的交通方式,因为火车票抢得我已经绝望了。祖国母亲要庆生,我实在无心工作啊。想想抢回来的票和放假去见朋友 就又难过又开心,简直不能更爽了。

一)selenium的TouchActions类
20180927分享 我写到TouchAction类,但是却写了2个方式来导入这个模块,
第一种 from appium.webdriver.common.touch_action import TouchAction
第二种 from selenium.webdriver.common.touch_actions import TouchActions
我当时不太懂,给的建议就是导入appium的。

因为我之前看到有人分享一种情景,滑动某些元素使用的selenium的TouchActions里面的scroll_from_element()方法。
输入生日时 如何滑动来实现 这是困扰我两、三周的问题
可以先点击这个图片,想象是这类似的情景。我一直没想通,他为什么用那个方法?

这是selenium的TouchActions

查看官方的资料后,scroll_from_element(on_element xoffset yoffset) 以元素为起点向下滑动,实现下拉操作
on_element:开始元素滚动。 xoffset:X偏移量。 yoffset:Y偏移量。

但是这个对于我这个图片这个场景搞不定!所以我给的方法是tap()坐标定位+滑动。

但官方资料有个flick_element(on_element, xoffset, yoffset, speed) 轻触、以元素为起点以一定速度向下滑动
on_element # 操作元素定位。xoffset#x轴偏移量。yoffset#y轴偏移量。speed#速度

我就试了一下,居然能够实现啦。真是意想不到的啊!!!!!

		abc = self.xin_find_element(By.ID, self.ouyu_ziliao_shengri_nian_id)
        # 正的是向下
        TouchActions(self.driver).flick_element(abc, 0, 200, 50).perform()
        abcd = self.xin_find_element(By.ID, self.ouyu_ziliao_shengri_yue_id)
        TouchActions(self.driver).flick_element(abcd, 0, 200, 50).perform()
        abcde = self.xin_find_element(By.ID, self.ouyu_ziliao_shengri_ri_id)
        TouchActions(self.driver).flick_element(abcde, 0, 200, 50).perform()

可以看到 y方向的200是向下滑动。 如果y方向设置-200可以实现向上滑动。

二)appium的TouchAction类

这是appium的TouchAction
规范里可用的事件有:短按(press) 释放(release) 移动到(moveTo) 点击(tap) 等待(wait) 长按(longPress) 取消(cancel) 执行(perform)
另外一个大类是MultiAction 多点触控的类,可以模拟用户多点操作

举例:地图App中,我们经常需要对界面进行缩放操作。这个待我尝试后再细致说。

可以看到两个不同的类的方法,是很大不同的。当然我还是推荐先使用appium的TouchAction类,(因为我还是不太懂)。

三)swipe滑动

    def xin_swipe(self, a, b, c, d, miao=500):
        time.sleep(1)
        shouji_x = self.driver.get_window_size()["width"]
        shouji_y = self.driver.get_window_size()["height"]
        # print("屏幕的宽是 %d" % shouji_x, "屏幕的高是 %d" % shouji_y)
        if a < 1:
            self.driver.swipe(shouji_x * a, shouji_y * b, shouji_x * c, shouji_y * d, miao)
        else:
            self.driver.swipe(a, b, c, d, miao)

我自己封装的方法:
之所以在最前面加个强制等待1秒,是我看到真实页面跳转后,加载数据时 直接滑动可能会出错。
之所以判断a和1的关系,因为实际输入坐标位置一般都是>1,<1的时候就是屏幕比例

实际运行的场景可以包括 1.app初次启动,引导页的滑动;2.某些地图app页面的滑动,各个方向都可以实现;3.实现上拉、下拉刷新,实际坐标点、时间需要再设置;

猜你喜欢

转载自blog.csdn.net/zyooooxie/article/details/82901583