持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第23天,点击查看活动详情
开启android坐标提示
1.点击设置按钮,进入设置界面,拉到最后
2.如果没有"开发者选项",点击“关于手机”
3.连续点击几次版本号,进入开发者模式
4.返回前一级,点击"开发者选项"
5.在输入位置,勾选"指针位置"
点击坐标点:driver.tap([(x,y)],time)
[(x,y)]:为坐标点的横坐标和纵坐标 time:为点击按钮的延迟时间,单位为ms 以用坐标点击“游戏”按钮为例
1.开启android坐标提示,获取“游戏”按钮坐标为:296,867,注意我这里选择的手机分辨 率是504*900
2.运行如下代码:
1. #coding=utf-8
2. from appium import webdriver
3. import time
4.
5. desired_caps = {}
6. desired_caps['platformName'] = 'Android'
7. desired_caps['platformVersion'] = '4.4.2'
8. desired_caps['deviceName'] = 'Android Emulator'
9. desired_caps['appPackage'] = 'cn.itools.avdmarket'
10. desired_caps['appActivity'] = '.ui.activity.HostActivity'
11. driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps )
12. time.sleep(3)
13. driver.tap([(296,867)],5000)
14. time.sleep(3)
driver.tap([(296,867)],5000) 点击坐标296.867,延迟5s
坐标位置滑动:driver.swipe(x1,y1,x2,y2,time)
x1,y1,x2,y2:从坐标点(x1,y1)滑动到(x2,y2) time:滑动过程消耗的时间,单位为ms 实例:
1. #coding=utf-8
2. from appium import webdriver
3. import time
4.
5. desired_caps = {}
6. desired_caps['platformName'] = 'Android'
7. desired_caps['platformVersion'] = '4.4.2'
8. desired_caps['deviceName'] = 'Android Emulator'
9. desired_caps['appPackage'] = 'cn.itools.avdmarket'
10. desired_caps['appActivity'] = '.ui.activity.HostActivity'
11. driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps )
12. time.sleep(3)
13. driver.swipe(100,600,100,100,5000)
14. time.sleep(3)
15. driver.quit()
driver.swipe(100,600,100,100,5000) 在5s内,手指从坐标(100,600)滑动到(100,100)
元素位置滑动:driver.scroll(el1,el2)
我们以设置为例子,按箭头方向做个滑动操作
1. #coding=utf-8
2. from appium import webdriver
3. import time
4.
5. desired_caps = {}
6. desired_caps['platformName'] = 'Android'
7. desired_caps['platformVersion'] = '4.4.2'
8. desired_caps['deviceName'] = 'Android Emulator'
9. desired_caps['appPackage'] = 'com.android.settings'
10. desired_caps['appActivity'] = '.Settings'
11. driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps )
12.
13. time.sleep(3)
14. element1=driver.find_element_by_name(u"位置信息")
15. element2=driver.find_element_by_name(u"主屏幕")
16. driver.scroll(element1,element2)
1. element1=driver.find_element_by_name(u"位置信息")
2. element2=driver.find_element_by_name(u"主屏幕")
获取初始元素位置和终点元素位置 driver.scroll(element2,element1) 从初始位置滑动到终点位置
输入:send_keys
这里和webdriver中一模一样 实例:
1. #coding=utf-8
2. from appium import webdriver
3. import time
4.
5. desired_caps = {}
6. desired_caps['platformName'] = 'Android'
7. desired_caps['platformVersion'] = '4.4.2'
8. desired_caps['deviceName'] = 'Android Emulator'
9. desired_caps['appPackage'] = 'cn.itools.avdmarket'
10. desired_caps['appActivity'] = '.ui.activity.HostActivity'
11. driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps )
12. time.sleep(3)
13. driver.find_element_by_name(u"请输入关键字").send_keys("111")
14. time.sleep(3)
15. driver.quit()
获取屏幕分辨率:driver.get_window_size()
实例:
1. #coding=utf-8
2. from appium import webdriver
3. import time
4.
5. desired_caps = {}
6. desired_caps['platformName'] = 'Android'
7. desired_caps['platformVersion'] = '4.4.2'
8. desired_caps['deviceName'] = 'Android Emulator'
9. desired_caps['appPackage'] = 'cn.itools.avdmarket'
10. desired_caps['appActivity'] = '.ui.activity.HostActivity'
11. driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps )
12. time.sleep(3)
13. size=driver.get_window_size()
14. print size
15. time.sleep(3)
16. driver.quit()
运行结果: . {u'width': 504, u'height': 900} 发现打印的结果是一个字典。
获取元素大小:dirver.find_element_by_xx().size
以百度手机助手为例:
1. #coding=utf-8
2. from appium import webdriver
3. import time
4. import testtest
5.
6. desired_caps = {}
7. desired_caps['platformName'] = 'Android'
8. desired_caps['platformVersion'] = '4.4.2'
9. desired_caps['deviceName'] = 'Android Emulator'
10. desired_caps['appPackage'] = 'com.baidu.appsearch'
11. desired_caps['appActivity'] = '.LauncherActivity'
12. driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps )
13. time.sleep(6)
14. size=driver.find_element_by_name(u"下吧精选").size
15. print size
16. time.sleep(4)
17. driver.quit()
整合屏幕滑动操作
现在要做四个函数,要求:
1.要4个方法,分别是向左、向右、向上、向下滑动
2.每次滑动整个屏幕坐标的70%,如纵坐标是900px,那么向下和向上滑动时,每次滑动 900*0.7px
3.每次滑动时间300ms
4.不论屏幕分辨率多少,都要能自动匹配
提示:
1.使用driver.get_window_size() 获取屏幕分辨率
2.获取的屏幕分辨率是一个字典,将里面的两个值分赋值给变量
3.利用driver.swipe(x1,y1,x2,y2,time) 进行滑动
swipe.py文件:
1.
2. def swipe_up(driver):
3. x=driver.get_window_size()["width"]
4. y=driver.get_window_size()["height"]
5. driver.swipe(x*0.5,y*0.9,x*0.5,y*0.2,300)
6.
7. def swipe_down(driver):
8. x=driver.get_window_size()["width"]
9. y=driver.get_window_size()["height"]
10. driver.swipe(x*0.5,y*0.2,x*0.5,y*0.9,300)
11.
12. def swipe_left(self,driver):
13. x=driver.get_window_size()["width"]
14. y=driver.get_window_size()["height"]
15. driver.swipe(x*0.9,y*0.5,x*0.2,y*0.5,300)
16.
17. def swipe_right(self,driver):
18. x=driver.get_window_size()["width"]
19. y=driver.get_window_size()["height"]
20. driver.swipe(x*0.2,y*0.5,x*0.9,y*0.5,300)
1.定义了包含4个滑动操作的函数
- driver.get_window_size() 获取到当前手机的分辨率,这里的值是字 典 {u'width': 504, u'height': 900}
3.x=driver.get_window_size()["width"] 获取字典中 width 的值,并将其赋值给变量x
4.y=driver.get_window_size()["height"] 获取字典中 height 的值,并将其赋值给变量y
- driver.swipe(x0.5,y0.9,x0.5,y0.2,300) 保持横坐标不变,纵坐标上移(0.9- 0.2)y。 滑动延迟300ms
主程序:
1. #coding=utf-8
2. from appium import webdriver
3. import time
4. import swipe
5.
6. desired_caps = {}
7. desired_caps['platformName'] = 'Android'
8. desired_caps['platformVersion'] = '4.4.2'
9. desired_caps['deviceName'] = 'Android Emulator'
10. desired_caps['appPackage'] = 'cn.itools.avdmarket'
11. desired_caps['appActivity'] = '.ui.activity.HostActivity'
12. driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps )
13. time.sleep(3)
14.
15. swipe.swipe_up(driver)
16.
17. time.sleep(3)
18. driver.quit()
结论:通过灵活的运用各种api,可以方便我们平时的测试,让其能自动匹配各种机型。
appium中一些api统计
1.driver.drag_and_drop(ele1,ele2) 按住element1位置并拖动到element2位置\ 2.driver.pinch(element) 在元素位置,进行缩小
3.driver.zoom(element) 在元素位置,进行放大