1、adb操作命令
-手势操作命令
-模拟点击事件
adb shell input tap x y # xy 为手机屏幕的坐标,参数之间用空格隔开
-模拟滑屏事件(参数用空格隔开)
adb shell input swipe startx starty endx endy # 起始和终止坐标
-模拟键盘操作
adb shell input keyevent 键值 (3表示HOME键,4表示返回键 66表示回车键)
-模拟输入操作
adb shell input text 内容 # 内容为要输入的内容,另外输入的内容不能是中文
当电脑上连接多个设备使用adb device 查看设备时,如果出现offline 则需要重启一下adb服务,当连接多个手机或者模拟器时,需要使用-s device_name参数来区分adb命令是操作的那个设备
eg: adb -s emulator-5554 shell input keyevent 4
2、appium 操作入门示例
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Richard_Kong 4 """ 5 使用appium写的第一个代码 启动 6 """ 7 import time 8 9 from appium import webdriver 10 # app初始配置信息,这些信息要通过adb命令来查询 11 des_caps = { 12 "platformName":"android", 13 "platformVersion":"5.1.1", # adb shell getprop ro.build.version.release 14 "deviceName":"****", 15 "appPackage":"com.baidu.homework", 16 "appActivity":".activity.init.InitActivity" 17 } 18 19 driver = webdriver.Remote("http://localhost:4723/wd/hub",des_caps) 20 21 time.sleep(5) 22 23 driver.close_app()
3、uiautomatorviewer 工具的使用
-通过uiautomatorviewer工具可以查看app的元素信息
为了提高工作效率,将 androidsdk的tools目录下,将uiautomatorviewer.bat 赋值一份出来,修改为ui.bat就ok了,后续直接在dos中输入ui就可以打开,并且要将截图保存,便于后续查看
4、元素定位的方法
1)--通过resource-id来定位
driver.find_element_by_id(resource-id的值)
2)通过class name来定位元素
通过元素的class 属性值来定位元素
app中,class的值始终都只有一个。
driver.find_element_by_class_name(class)
3)通过xpath定位元素
通过xpath来定位元素
driver.find_element_by_xpath("//*[@text = 'value']")
单个元素定位不到会报错
driver.find_element_by_id("com.baidu.homework:id/sll_phone").click() driver.find_element_by_xpath("//*[@text ='输入手机号码']").send_keys("123456789") 显示等待 WebDriverwait() 封装的思想,将显示等待查找元素封装为一个函数,并在其他文件中引用
1 from selenium.webdriver.support.wait import WebDriverWait 2 from appium.webdriver.webdriver import WebDriver 3 from appium.webdriver.webelement import WebElement 4 5 6 def get_element(driver: WebDriver, element: WebElement) -> WebElement: 7 """ 8 :type driver: WebDriver 9 :param driver: 10 :param element: 11 :return: WebElement 12 driver.find_element(By.ID,"com.baidu.homework:id/sll_phone") 13 """ 14 wait = WebDriverWait(driver, 10, 1) 15 element = wait.until(lambda x: x.find_element(element[0], element[1])) 16 return element
5、定位一组元素
driver.find_elements_by_id(resource_id)
driver.find_elements_by_class_name(class_name)
driver.find_elements_by_xpath(xpath)
driver.find_elements(By.ID,value)
返回的值是一个列表,如果没有找到,则返回空列表,可以通过下标来使用元素对象,下标是从0开始。
1)元素的操作:
element.click()针对元素进行点击操作
element.clear() 针对元素进行清空操作
element.send_keys("value") 针对元素进行输入字符操作
element.text # 获取元素的文本内容
element.loaction # 返回值是一个字典,字典中包含xy,x,y表示的是元素在手机屏幕左上角点的坐标
获取元素的代销
element.size # 返回的是一个字典,字典中会包含width和height,width表示宽度,height表示高度
element.get_attribute("attribute") # 获取attribute表示的属性名称的值
获取id时,attribute = “resource_id”
获取的是class的值,attribute = "className"
如果是attribute = name 获取的是text或者 content-desc(text优先,找不到text值,再去找content-desc的值)