Appium常用API(五)

appium的客户端(WebDriver)提供的接口按作用分为:

1、系统操作

2、获取和操作控件信息

3、控件查找

4、手势操作

1、系统操作 (driver. api)

❤  driver.set_network_connection(self, bundle_id)------------- 设置网络。

❤ 》is_app_install(APP_PACKAGE)------------- 判断应用程序是否安装

        //print(driver.is_app_installed('cn.goapk.market'))    返回结果为True(已安装) / False(未安装)

❤ 》driver.install_app(APK_PATH)------------- 将app_path路径的应用安装到实际上,此处的app_path指PC端path,需要包含目录和文件名。

                driver.installApp("path/to/my.apk");

                driver.installApp("D:\\android\\apk\\ContactManager.apk");

❤ 》driver.remove_app(APP_PACKAGE) ----------------移除app

❤ 》重启app(先关闭再启动)  不需要入参

                driver.closeApp();  # 关闭当前操作的app,不会关闭驱动对象,相当于按home键将应用置于后台,可以通过launchApp()再次启动。

                driver.launchApp();  #启动app,重新启动应用也是一个测试点,该方法需要配合closeApp()使用的。

❤ resetApp() --------------重置当前被测程序到出始化状态。该方法不需要入参。

❤ driver.quit() -------------  # 关闭驱动对象,同时关闭所有关联的app (用例的最后使用)

❤ current_activity(self)------------- 获取当前正在显示的Activity信息

❤ driver.start_activity(appPackage,appActivity) ------------------脚本内启动其他app,启动后需要数据线重新连接,不然报错其中一个进程在运行

        //driver.start_activity('com.android.mms', '.ui.ConversationList')

❤ shake(self)------------- 模拟晃动手机事件

❤ background_app(self, seconds)------------- 将被测应用程序放到后台运行一段事件,seconds为持续的秒数

❤ get_screenshot_as_file(self, filename)------------- 将手机屏幕截图并保存电脑上的文件,filename为文件的路径和名称。

❤ get_window_size(self)------------- 获取手机的分辨率。一般配合swipe使用。driver.get_window_size()[‘width’];driver.get_window_size()[‘height’]

❤ print(driver.page_source)------------- 返回当前页面的文档结构,判断特定的元素是否存在

❤ 》pull_file(self, path)------------- 拉取手机上的一个文件,并以Base64格式编码返回文件数据,path为手机上的文件路径

        // import base64

        // data = driver.pull_file('/sdcard/test.txt') # 返回数据为base64编码

        // print(str(base64.b64decode(data), 'utf-8')) # base64解码

❤ 》push_file (self, path, base64data)---------将一个Base64格式编码的数据推送到手机,path为手机上的文件路径,base64data为要推送的数据

        // import base64

        // data = str(base64.b64encode('推送内容'.encode('utf-8')), 'utf-8')

        // driver.push_file('/sdcard/推送文件名称.txt', data)

2、获取控件信息 、操作控件( driver. api)

❤ 》  text -------------  element.text 获取控件的文本信息

        if driver.find_element_by_id('com.iflytek.smartsq:id/home_menu_home_txt').text == '首页':

                print('判断结果:当前为首页')

        else:

                print('判断结果:当前非首页')

 ❤ send_keys(self,*value) -------------模拟键盘输入到控件中

❤  is_selected(self) -------------判断控件是否被选中, 如选中返回true

❤   》 click(self)------------- element.click 点击控件

❤  clear(self)  ------------- element.clear 清空文本控件的内容

❤  get_attribute(self,name) -------------element.get_attribute(“enabled”) 获取控件的enabled属性。相当于is_enabled()

 ❤ is_enabled(self) -------------判断控件是否可用,如可用返回true

❤  is_displayed(self)  ------------- 判断控件是否显示,如显示返回true

3、控件查找 ( driver. api) ,然后.click等操作

WebDriver支持ID、Xpath、Class Name、Accessbility id和UIAutomator来查找控件

》通过id定位元素

语法

            find_element_by_id(self,id_)

            find_elements_by_id(self,id_)(返回list)

            通过控件的resource id查找

举例

            driver.find_element_by_id("com.thinkive.future.dev.standard:id/iv_quotation_futures_search").click() --如果需要点击操作的话。

通过xpath定位元素

语法

            find_element_by_xpath(self,xpath)

            find_elements_by_xpath(self,xpath)(返回list)

            通过xpath查找控件

举例

            driver.find_element_by_xpath(@resource_id, "com.thinkive.future.dev.standard:id/iv_quotation_futures_search"

通过class name定位元素

语法

            find_element_by_class_name(self,name)

            find_elements_by_class_name(self,name)(返回list)

            在Native App测试中,参数Nname表示控件的类型,如android.view.Text

            在网页测试中,参数Name指代网页element的属性类名。如<div class='test-demo'>...</div.>

举例

            driver.find_element_by_class("android.view.Text")

通过Text定位元素

语法

            find_element_by_name(self,name)

            find_elements_by_name(self,name)(返回list)

            name表示text,在appium 1.5.0中废弃了该语法。但是WebDriver实际上是支持的

举例

            driver.find_element_by_class("登录")

通过Content Description定位元素

语法

            find_element_by_accessibility_id(self,id)

            find_elements_by_accessibility_id(self,id)(返回list)

            accessibility_id指Native App控件的Content Description

举例

            driver.find_element_by_accessibility_id("请登录")

通过UIAutomator定位元素

语法

            find_element_by_android_uiautomator(self, uia_string)

            uia_string通过java语言编写,

举例

            self.device.find_element_by_android_uiautomator('text(\"列表\")')

            driver.find_element_by_android_uiautomator('new UiSelector().text("18513199586")').clear()

4、手势操作 ( driver. api)


滑动操作

语法

        swipe(self,start_x, start_y, end_x, end_y, duration=None)

        从A点移动到B点

        duration为滑动动作执行事件,单位为毫秒

        APP的坐标,左上角值最小(0,0),右下角值最大

举例

点击屏幕

语法

        tap(self,positions,duration=None)

        点击屏幕上的位置,最多支持五个手指同时点击

        duration为滑动动作执行事件,单位为毫秒。如果该参数不提供,则认为是点击操作;如果该参数指定,则认为是长按

        positions是一个列表,每一个列表项是一个二元组,值分别是屏幕上坐标的X和Y

举例

        driver.tap([(537,1856)], 500)

        driver.tap([(100,20),(100,60),(100,100)],500)

缩小操作

语法

        flick(self,element=None, precent=200, step=50)

        在某控件上执行缩小操作,默认缩放比例为200%

        step表示缩小动作分多少步完成,默认50

举例

        driver.flick(element)

放大操作

语法

        zoom(self,element=None, precent=200, step=50)

        在某控件上执行缩小操作,默认缩放比例为200%

        step表示缩小动作分多少步完成,默认50

举例

        driver.zoom(element)

滚动操作

语法 

        scroll(self, origin_el, destination_el)

        从origin_el控件滚动到destination_el控件

        参数必须是控件,而不是控件信息

举例 

拖曳操作

语法 

        drag_and_drop(self, origin_el, destination_el)

        把origin_el控件拖曳到destination_el的位置

举例 

        close_app(self)如果Desired Capabilities指定的应用程序正在运行,则关闭该程序

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,458评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,454评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,171评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,062评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,440评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,661评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,906评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,609评论 0 200
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,379评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,600评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,085评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,409评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,072评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,088评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,860评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,704评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,608评论 2 270

推荐阅读更多精彩内容