Open yinshuang214 opened 5 years ago
获取控件类API
1.find_element_by_id 通过元素的ID定位元素
用法 driver. find_element_by_id(“id”)
2.find_elements_by_id 通过元素ID定位,含有该属性的所有元素
用法 driver. find_elements_by_id(“id”)
用法 driver.find_element_by_name(“name”)
4.find_elements_by_name 通过元素Name定位(元素的名称属性text),含有该属性的所有元素
5.find_elements_by_xpath 通过元素的xpath定位元素
用法find_elements_by_xpath(“//*”)
6.find_element_by_accessibility_id 通过accessibility id查找元素
用法driver.find_element_by_accessibility_id(‘id’)
1.点击事件 click() tap() click和tap都能实现单击的效果。其区别在于click是作用于driverelement的实例化对象,而tap是对屏幕上的坐标位置进行点击。前者对元素的位置变化并不敏感,而后者是针对具体的像素坐标点击,受分辨率和元素位置影响较大。 2.输入事件 send_keys() set_text() send_keys和set_text也都能满足输入文本内容的操作。其区别在于send_keys会调用设备当前系统输入法键盘,而set_text直接对目标元素设置文本。由此可推,send_keys的输入内容往往和预期内容不一致,而set_text的输入则是直接赋值,并不是键盘事件。 3.滑动(翻屏)事件 swipe() flick() swipe和flick都是滑动操作,它们都是从[start_x, start_y]划到[end_x, end_y]的过程,唯一不同的是swipe比flick多了一个duration参数,有了这个参数就可以自定义从start到end动作的作用时间,以达到快速滑动或者慢速滑动的效果。 4.缩放事件 pinch() zoom() 默认会对目标元素进行放大一倍或者缩小一半的操作,此api方法适合于在测试运动地图的缩放时的变化。 5.长按事件 long_press() 长按方法是在TouchAction类中,所以在使用时需要先import TouchAction。在删除运动历史记录时,在记录列表长按删除
2.is_app_installed is_app_installed() 检查app是否有安装 返回 True or False。例如:在微信登录时,选择登录方式时会判断是否已安装微信,若未安装则有dialog弹框,已安装则跳转到微信登录页面
3.install_app install_app() 接上个例子,若未安装微信出现dialog弹框,检查完dialog后再安装微信app。特别说明:例子中的"weixin.apk"是指app_path
5.launch_app launch_app() 打开一个capabilities配置的设备应用。此方法目前并没有使用。待以后用到时再来做更新。
6.close_app close_app() 关闭app应用程序。此方法常用在代码末尾,在清理和释放对象时使用。结合unittest框架常见tearDown()里使用
以下是我的代码演示:
coding=utf-8 from datetime import time from appium import webdriver from time import sleep from appium.webdriver.common.touch_action import TouchAction from appium.webdriver.common.multi_action import MultiAction def getSize(): pass class Login: desired_caps = {} desired_caps['platformName'] = 'Android' desired_caps['platformVersion'] = '4.4.4' desired_caps['deviceName'] = '79KR8PU8SOLV79B6' desired_caps['appPackage'] = 'cn.zhimawu' desired_caps['appActivity'] = 'cn.zhimawu.SplashActivity' driver = webdriver.Remote( 'http://localhost:4723/wd/hub', desired_caps, keep_alive=True ) driver.implicitly_wait(10000) def userlogin(self): self.driver.find_element_by_id("cn.zhimawu:id/login").click() self.driver.find_element_by_id("cn.zhimawu:id/editPhone").send_keys("123213sdwe") self.driver.find_element_by_id("cn.zhimawu:id/editPhone").clear() self.driver.find_element_by_id("cn.zhimawu:id/editPhone").send_keys("15811055793") self.driver.find_element_by_id("cn.zhimawu:id/edit_pwd").set_text("1234qwer") self.driver.tap([(498, 942)], 1000) self.driver.find_element_by_id("cn.zhimawu:id/i_dont_like_this").click() self.driver.implicitly_wait(10000) x=self.driver.get_window_size()['width'] y=self.driver.get_window_size()['height'] self.driver.implicitly_wait(10000) print(self.driver.get_window_size()) # self.driver.flick(x * 3 / 4, y / 2, x / 10, y / 2)# 屏幕向左滑动,y轴不变,x轴从大变小 # self.driver.swipe(x * 3 / 4, y / 2, x / 10, y / 2, 10000) #self.driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.support.v4.view.ViewPager/android.widget.RelativeLayout/android.widget.LinearLayout/android.support.v7.widget.RecyclerView/android.widget.FrameLayout[1]/android.widget.RelativeLayout/android.widget.ImageView").click() #self.driver.find_element_by_id("cn.zhimawu:id/tv_unuse").click() #self.driver.implicitly_wait(10000) # 11.is_app_installed:检查app是否有安装 返回 True or False # if self.driver.is_app_installed("cn.zhimawu"): # print("已安装河狸家app") # else: # print("未安装") #12.long_press长按事件 self.driver.tap([(536, 1813)], 1000) action1 = TouchAction(self.driver) self.driver_element =self.driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.support.v7.widget.RecyclerView/android.widget.LinearLayout[5]/android.widget.RelativeLayout") action1.long_press(self.driver_element).wait(2 * 1000).perform() # 2为长按控件的时间,单位秒 # Shake the device(摇一摇手机 )用法 driver.shake() #self.driver.shake() # 退出脚本运行并关闭每个相关的窗口连接用法: driver.quit() #self.driver.quit() # 关闭当前窗口 # self.driver.close() # 关闭app应用程序 self.driver.close_app() if __name__ == '__main__': login = Login() login.userlogin() # for i in range(3): # login.pinch() # # for i in range(3): # login.zoom()
*appium的常用API
获取控件类API
1.find_element_by_id 通过元素的ID定位元素
用法 driver. find_element_by_id(“id”)
2.find_elements_by_id 通过元素ID定位,含有该属性的所有元素
用法 driver. find_elements_by_id(“id”)
用法 driver.find_element_by_name(“name”)
4.find_elements_by_name 通过元素Name定位(元素的名称属性text),含有该属性的所有元素
用法 driver.find_element_by_name(“name”)
5.find_elements_by_xpath 通过元素的xpath定位元素
用法find_elements_by_xpath(“//*”)
6.find_element_by_accessibility_id 通过accessibility id查找元素
用法driver.find_element_by_accessibility_id(‘id’)
元素操作类API
1.点击事件 click() tap() click和tap都能实现单击的效果。其区别在于click是作用于driverelement的实例化对象,而tap是对屏幕上的坐标位置进行点击。前者对元素的位置变化并不敏感,而后者是针对具体的像素坐标点击,受分辨率和元素位置影响较大。 2.输入事件 send_keys() set_text() send_keys和set_text也都能满足输入文本内容的操作。其区别在于send_keys会调用设备当前系统输入法键盘,而set_text直接对目标元素设置文本。由此可推,send_keys的输入内容往往和预期内容不一致,而set_text的输入则是直接赋值,并不是键盘事件。 3.滑动(翻屏)事件 swipe() flick() swipe和flick都是滑动操作,它们都是从[start_x, start_y]划到[end_x, end_y]的过程,唯一不同的是swipe比flick多了一个duration参数,有了这个参数就可以自定义从start到end动作的作用时间,以达到快速滑动或者慢速滑动的效果。 4.缩放事件 pinch() zoom() 默认会对目标元素进行放大一倍或者缩小一半的操作,此api方法适合于在测试运动地图的缩放时的变化。 5.长按事件 long_press() 长按方法是在TouchAction类中,所以在使用时需要先import TouchAction。在删除运动历史记录时,在记录列表长按删除
元素事件类API
2.is_app_installed is_app_installed() 检查app是否有安装 返回 True or False。例如:在微信登录时,选择登录方式时会判断是否已安装微信,若未安装则有dialog弹框,已安装则跳转到微信登录页面
3.install_app install_app() 接上个例子,若未安装微信出现dialog弹框,检查完dialog后再安装微信app。特别说明:例子中的"weixin.apk"是指app_path
5.launch_app launch_app() 打开一个capabilities配置的设备应用。此方法目前并没有使用。待以后用到时再来做更新。
6.close_app close_app() 关闭app应用程序。此方法常用在代码末尾,在清理和释放对象时使用。结合unittest框架常见tearDown()里使用
以下是我的代码演示: