appium(三)

275 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第23天,点击查看活动详情

开启android坐标提示

1.点击设置按钮,进入设置界面,拉到最后

image.png

2.如果没有"开发者选项",点击“关于手机”
3.连续点击几次版本号,进入开发者模式

image.png
4.返回前一级,点击"开发者选项"

image.png
5.在输入位置,勾选"指针位置"

image.png

点击坐标点:driver.tap([(x,y)],time)

[(x,y)]:为坐标点的横坐标和纵坐标 time:为点击按钮的延迟时间,单位为ms 以用坐标点击“游戏”按钮为例

1.开启android坐标提示,获取“游戏”按钮坐标为:296,867,注意我这里选择的手机分辨 率是504*900

image.png 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)

我们以设置为例子,按箭头方向做个滑动操作

image.png

    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个滑动操作的函数

  1. 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

  1. 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) 在元素位置,进行放大