Appium python-client添加联系人

Appium python-client添加联系人

测试平台:红米 Note 4X
操作系统:Android 7.0

ContactsTest.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#coding=utf-8
from time import sleep
from appium import webdriver

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '7.0'
desired_caps['deviceName'] = 'Redmi Note 4X'
desired_caps['appPackage'] = 'com.android.contacts'
desired_caps['appActivity'] = '.activities.PeopleActivity'
# 以下两项主要是在点击输入框的时候, 会触发系统输入法
# 导致可能我们发送的是字符 `234`, 但是九宫格中文输入法有可能给出的是 `bei`
# 这两个属性就是屏蔽系统输入法, 使用Appium自己的, 但是测试完成后, 得自己去系统设置中将输入法切换回来
desired_caps['unicodeKeyboard'] = True # 使用unicodeKeyboard的编码方式来发送字符串
desired_caps['resetKeyboard'] = True # 将键盘给隐藏起来

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

# 通过id查找控件
# 具体的控件id可以通过 `AndroidSDK\tools\uiautomatorviewer.bat` 来直接获取
createContactBtn = driver.find_element_by_id('com.android.contacts:id/fab')
# 模拟点击操作
createContactBtn.click()
# 也可以通过文本查找控件, 并输入姓名
name = driver.find_element_by_name(u"姓名") # "姓名" 是输入框的hint值
name.click()
name.send_keys("张三") # 输入指定的文本, 注意这里需要上面desire_caps屏蔽系统输入法才行
# 也可以查找多个控件
# 比如通讯录可能有多个电话号码输入框 `elements`
phone = driver.find_elements_by_name(u"电话")
phone[0].click()
phone[0].send_keys("18888888888")
# 判断结果是否符合预期, 不通过的话会在这里中断并打印日志
# self.assertEqual(phone[0].text, "15000776646")
# 截屏, 会在当前目录保存指定文件名的图片
driver.save_screenshot("after_input.png")
saveBtn = driver.find_element_by_name(u"确定")
saveBtn.click()
# 等待, 单位:秒
sleep(5)

driver.quit()

控件属性/操作方法

  • text 控件显示的文本信息,如 edit.text,有点类似于属性获取
  • click() 模拟控件点击操作,如 button.click
  • clear() 清除控件的文本
  • is_enabled() 判断控件是否可用
  • is_selected() 控件是否被选中
  • is_displayed() 控件是否显示
  • get_attribute(self, name) 指定属性名称,返回属性值,若属性名不存在,则返回none
  • send_keys(self, *value) 模拟输入文本到控件

系统API

  • current_activity 获取当前Activity信息,可以直接打印,如 print(driver.current_activity)
  • current_context / context 在真机上测试的时候都是返回 NATIVE_APP
  • install_app(self, app_path) 安装应用APP
  • is_app_installed(self, bundle_id) 在Android中传入包名即可
  • get_screenshot_as_file(self, filename) 传入要保存的路径和文件名,可以使用相对路径
  • save_screenshot(self, filename) 跟上一条的功能类似
  • network_connection 查看当前网络信息,整数值,==!测试出来都是1

Powered by AppBlog.CN     浙ICP备14037229号

Copyright © 2012 - 2020 APP开发技术博客 All Rights Reserved.

访客数 : | 访问量 :