三、Appium的元素定位与隐式等待

目录

  • desirecapability介绍
  • appium元素定位
  • 隐式等待

测试用例的重要部分

  • 导入依赖:
    • from appium import webdriver
    • capabilities设置
  • 初始化driver:
    • python webdriver.remote
  • 隐式等待, 增强用例的稳定性
  • 元素定位与操作find+action
  • 断言assert

Capability设置

  • app apk地址
  • appPackage包名
  • appActivity Activity名字
  • automationName:默认使用uiautomator2(andorid默认使用uiautomator2, ios默认使用XCUITest)
  • noReset fullReset:是否在测试前后重置相关环境(例如首次打开弹框,或者是登录信息)
    • 演示雪球的首次启动弹框功能,noreset=True, noreset=false情况
  • unicodeKeyBoard resetKeyBoard:是否需要输入非英文之外的语言并在测试完成后重置输入法。
    • 举例输入中文,alibaba,阿里巴巴
  • newCommandTimeout:应用超时时间,默认为60秒
  • udid:设备唯一标识,多台设备的时候使用
  • orientation:横竖屏展示
  • autoView:自动识别webview
  • 官方文档: https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md
  • dontStopAppOnReset:首次启动的时候,不停止 app(可以调试或者运行的时候提升运行速度)
  • skipDeviceInitialization:跳过安装,权限设置等操作(可以调试或者运行的时候提升运行速度)

appium常用定位方式

  • 常用的两种定位方式id, accessibiliity_id
    • driver.find_element_by_id(resource-id)
    • driver.find_element by accessibility _id(content-desc),accessibility _id的属性值为content-desc的属性值

三种等待方式

  • 强制等待:
    • sleep不推荐
  • 隐式等待(全局性)
    • 设置一个超时时间,服务端appium会在给定的时间内,不停的查找,默认值是0。
    • 用法: `driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    • 在服务端等待
  • 显式等待(等待某个元素)
    • Element = WebDriverWait(driver,10,0.5).until(expected_conditions.visibility_of_element_located(MobileBy.ID, "com.android.settings:id/title")))
    • 在客户端等待

实例

from appium import webdriver

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '6.0'
desired_caps['deviceName'] = '127.0.0.1:7555'
desired_caps['appPackage'] = 'com.xueqiu.android '
desired_caps['appActivity'] = 'com.xueqiu.android.common.MainActivity'
desired_caps['noReset'] = 'true'
desired_caps['dontStopAppOnReset'] = "true"
desired_caps['skipDeviceInitialization'] = "true"
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
# 隐式等待
driver.implicitly_wait(5)

# 点击搜索框
driver.find_element_by_id("com.xueqiu.android:id/home_search").click()
# 输入搜索内容
driver.find_element_by_id("com.xueqiu.android:id/search_input_text").send_keys("alibaba")
# 返回上一个页面
driver.back()

driver.quit()

下一节:App控件定位,包括id、aid、XPath定位方法,DOM结构解读,UIAutomatorViewer定位工具。

你可能感兴趣的:(三、Appium的元素定位与隐式等待)