ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

appium操作

2021-12-27 19:59:37  阅读:148  来源: 互联网

标签:appium start self swipe driver height width 操作


1.获取driver属性

  • current_package,包名,aapt,元素定位给
  • current_activity,后面切换有用,==>url
  • context,上下文,web窗口切换,h5测试,获取上下文,driver.switch_to.context
  • contexts,所有的上下文,==>window_handlers
  • current_context,获取现在的上下文,获取当前窗口current_window_handler
  • page_source,源代码,html,driver.page_source
  • capabilities
  • device_time,设备时间
  • location,定位
# 获取现在的app页面的名称
print(driver.current_activity)
# 获取现在的app页面的源代码 xml
print(driver.page_source)
# 定位
print(driver.location)
# 获取caps参数信息
print(driver.capabilities)
# 获取窗口大小,屏幕尺寸
print(driver.get_window_size())

2.获取元素属性

  • el.rect,获取元素的尺寸,包括元素的宽度高度和起始点的坐标
  • el.text,获取元素的文本
  • el.get_attribute(),获取元素的属性值
el = driver.find_element("id", "com.lemon.lemonban:id/navigation_my")
# 获取元素的文本
print(el.text)
# 获取元素的尺寸,包含元素的高度宽度和起始点的坐标
print(el.rect)

3.用户操作

  • el.click()
  • el.send_keys(),注意,appium中输入中文,必须要配置caps中的参数
    "unicodeKeyboard": True,
    "resetKeyboard": True,
    使用真机操作时,需要修改手机配置的输入法后再进行输入

4.触屏操作

  • tap,相当于全局的click,适合封装在basepage中
  • move_to
  • press
  • long_press
  • release
  • wait
  • flick

5.swipe滑动

  • driver.swipe()

 在 Appium 中提供 swipe() 方法来模拟用户滑动屏幕。

 swipe() 实现过程 是先通过在屏幕上标记两个坐标,然后再从开始坐标移动到结束坐标。

# 滑动操作
# get_window_size()获取屏幕尺寸
width = driver.get_window_size()['width']
height = driver.get_window_size()['height']
driver.swipe(start_x=width * 0.9, start_y=height * 0.5, end_x=width * 0.1, end_y=height * 0.5)
driver.swipe(start_x=width * 0.9, start_y=height * 0.5, end_x=width * 0.1, end_y=height * 0.5)
driver.swipe(start_x=width * 0.9, start_y=height * 0.5, end_x=width * 0.1, end_y=height * 0.5)

封装后:

class Page:

    def __init__(self, driver):
        self.driver = driver

    def width(self):
        """获取app的宽度"""
        return self.driver.get_window_size()['width']

    def height(self):
        """获取app的高度"""
        return self.driver.get_window_size()['height']

    def swipe_left(self):
        """从右往左滑动"""
        width = self.width()
        height = self.height()
        self.driver.swipe(start_x=width * 0.9, start_y=height * 0.5, end_x=width * 0.1, end_y=height * 0.5)

    def swipe_right(self):
        """从左往右滑动"""
        width = self.width()
        height = self.height()
        self.driver.swipe(start_x=width * 0.1, start_y=height * 0.5, end_x=width * 0.9, end_y=height * 0.5)

    def swipe_up(self):
        """从下往上滑动"""
        width = self.width()
        height = self.height()
        self.driver.swipe(start_x=width * 0.5, start_y=height * 0.9, end_x=width * 0.5, end_y=height * 0.1)

    def swipe_down(self):
        """从上往下滑动"""
        width = self.width()
        height = self.height()
        self.driver.swipe(start_x=width * 0.5, start_y=height * 0.1, end_x=width * 0.5, end_y=height * 0.9)

6.按键操作

driver.press_keycode(8)

按键的数字代表的意义可参考:

Appium---Android的keycode键值 - 简书

7.toast弹框

前提

登录:Toast是viewer识别不到的,但是我们需要确认文本时候正确。

  • appium server 1.6.3以上
  • 代码中必须定制automationName为:UiAutomator2
  • UiAutomator2只支持安卓版本5.0+
  • jdk1.8 64位以上,配置JAVA_HOME环境变量

定位

a)表达式

  • xpath定位://*[contains(@text,'手机号码不能为空')]
  • find_element_by_xpath("//android.widget.Toast")

b)等待方式

注意:wait只能用pesence_of_element_located,不能用visibility

8.start_activity进入页面

app的路径依赖是很严重的,如果需要测试某个单纯的页面,但是进入这个页面有很长的路径,则会严重影响效率,而且路径过长,会让测试程序不稳定。

start_activity可以快速进入指定界面,只需要指定activity的名称。

获取当前页面的名称:

adb shell dumpsys activity | find "mResumedActivity"

driver.start_activity('com.lemon.lemonban','.activity.LoginActActivity')

标签:appium,start,self,swipe,driver,height,width,操作
来源: https://blog.csdn.net/Ly_LittleStar/article/details/122177993

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有