APPium自动化常用指令

APPium自动化常用指令

常用连接配置

desired_caps = {
    'platformName': 'Android',    # 被检测手机系统 安卓 or 苹果
    'platformVersion': '5.1.1',    # 手机安卓版本
    # 'deviceName': '127.0.0.1:62001',    # 设备名称。如果是真机,在'设置->关于手机->设备名称'里查看
    'deviceName': 'emulator-5554',
    'appPackage': 'com.tencent.mobileqq',    # 启动APP Package名称
    'appActivity': '.activity.SplashActivity',   # 启动Activity的名称
    'noReset': True,  # 不重置APP
    'newCommandTimeout': 6000,    # 加长操作时间,默认一分钟后自动关闭
    # 以上必填,以下选填
    'unicodeKeyboard': True,    # 使用unicode输入法,输入中文时需要使用,填True,看模拟器输入法,有些需要安装,有些不需要
    'resetKeyboard': True,    # 执行完程序回复原来输入法
    # 'automationName': 'UiAutomator2', # 获取toast信息弹出框需添加,但需要先配置UiAutomator2
    # 'app': r'D:\apk\bili.apk',	# 测试apk包的路径,如果有了app就不需要APP Package和Activity,反理同之
}

连接Appium Server,初始化自动化环境

from appium import webdriver

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

隐式等待和显式等待

隐式等待

当发现元素没有找到的时候, 并不立即返回找不到元素的错误。而是周期性(每隔半秒钟)重新寻找该元素,直到该元素被找到,或者超出指定最大等待时长,这时才 抛出异常(如果是 find_elements 之类的方法, 则是返回空列表)。

Selenium 的 Webdriver 对象 有个方法叫 implicitly_wait

该方法接受一个参数,用来指定 最大等待时长。

# 设置缺省等待时间
driver.implicitly_wait(10)

显式等待

顾名思义,显式等待就是运行代码后设置好固定的等待时间,然后再继续运行,常用的为 time 模块的 sleep 方法

该方法接受一个参数,用来指定 最大等待时长。

import time
time.sleep(1)

界面元素查看工具

做 Selenium Web 自动化的时候,要找到元素,我们是通过浏览器的开发者工具栏来查看元素的特性,根据这些特性(属性和位置),来定位元素

Appium 要自动化手机应用,同样需要工具查看界面元素的特征。

常用的查看工具是: Android Sdk包中的 uiautomateviewer 和 Appium

定位元素

Appium是基于Selenium的,所以 和 Selenium 代码 定位元素的 基本规则相同:

  • find_element_by_XXX 方法,返回符合条件的第一个元素,找不到抛出异常
  • find_elements_by_XXX 方法,返回符合条件的所有元素的列表,找不到返回空列表
  • 通过 WebDriver 对象调用这样的方法,查找范围是整个界面
  • 通过 WebElement 对象调用这样的方法,查找范围是该节点的子节点

根据ID

在 Selenium Web 自动化教程里,如果能根据 ID 选择定位元素,最好根据ID,因为通常来说ID是唯一的,所以根据 ID 选择 效率高。

在安卓应用自动化的时候,同样可以根据 ID 查找。

但是这个ID ,是安卓应用元素的 resource-id 属性

使用如下代码

driver.find_element_by_id('')

根据CLASS NAME

安卓界面元素的 class 属性 其实就是根据元素的类型,类似 web 里面的 tagname, 所以通常不是唯一的。

通常,我们根据 class 属性来选择元素, 是要选择多个而不是一个。

当然,如果你确定要查找的界面元素的类型在当前界面中只有一个,就可以根据class来唯一选择。

使用如下代码

driver.find_elements_by_class_name('android.widget.TextView')

根据ACCESSIBILITY ID

元素的 content-desc 属性是用来描述该元素的作用的。

如果要查询的界面元素有 content-desc 属性,我们可以通过它来定位选择元素。

使用如下代码

driver.find_element_by_accessibility_id('')

Xpath

Appium 也支持通过 Xpath 选择元素。

但是其可靠性和性能不如 Selenium Web 自动化。因为 Web 自动化对 Xpath 的支持是由浏览器实现的,而 Appium Xpath 的支持是 Appium Server 实现的。

毕竟,浏览器产品的成熟度比 Appium 要高很多。

当然,Xpath是标准语法,所以这里表达式的语法规则和以前学习的Selenium里面Xpath的语法是一样的,比如

driver.find_element_by_xpath('')

注意:

selenium 自动化中,xpath 表达式中每个节点名是 html 的 tagname。

但是在 appium 中,xpath 表达式每个节点名是元素的 class 属性值。

比如:要选择所有的文本节点,就使用如下代码

driver.find_element_by_xpath('//android.widget.TextView')

Appium键盘操作

appium扩展提供了pressKeyCode()方法。该方法Android特有。

常用键盘操作键:

KEYCODE_HOME 按键Home

KEYCODE_MENU 菜单键

KEYCODE_BACK 返回键

KEYCODE_ENTER 回车键

KEYCODE_ESCAPE ESC键

KEYCODE_CTRL_LEFT Control+Left

KEYCODE_CTRL_RIGHT Control+Right

比如:

from appium.webdriver.extensions.android.nativekey import AndroidKey

driver.pressKeyCode(AndroidKey.enter)
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在使用Appium进行手机元素定位时,我们可以借鉴Selenium Web自动化中的方法。首先,我们可以通过开发者工具栏来查看元素的特性,包括属性和位置,以帮助我们定位元素。 Appium提供了多种元素定位方法,比如通过ID、类名、XPATH、CSS选择器等来定位元素。其中,通过ID定位元素是最常见和有效的方法之一。通过给定元素的ID属性值,我们可以唯一地定位到该元素。 除了ID,我们还可以使用类名来定位元素。类名是元素的class属性值,通过该属性值,我们可以定位到具有相同类名的元素。 另外,XPATH是一种非常强大的定位方法,它可以通过元素的路径来定位元素。路径可以是绝对路径或相对路径,通过指定元素的层次关系和属性值来定位元素。 CSS选择器也是一种常用的元素定位方法,它可以通过元素的属性值和层次关系来定位元素。与XPATH类似,CSS选择器也具有灵活的定位能力。 在使用这些元素定位方法时,我们需要根据具体的应用场景和元素特征选择合适的方法进行定位。另外,为了增加定位成功率,我们还可以使用等待机制,即在定位元素之前先等待一段时间,等待元素加载完成后再进行定位操作。 总结起来,通过Appium可以使用多种元素定位方法,包括ID、类名、XPATH、CSS选择器等。在进行元素定位时,我们可以借助开发者工具栏查看元素的特性,选择合适的定位方法,并结合等待机制来提高定位成功率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Appium移动自动化测试](https://download.csdn.net/download/weixin_26851157/19709037)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Appium元素定位方法](https://blog.csdn.net/qq_36662150/article/details/122967129)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [APPium自动化常用指令](https://blog.csdn.net/weixin_45609519/article/details/106670484)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值