• Robot Framework移动端自动化测试----02简单的开始


    1、手机或者模拟器连接上之后,打开要测试的app,开始获取应用的包名等信息:(逍遥模拟器的命令:adb connect 127.0.0.1:21503)

    1)使用adb命令来获取当前打开应用的包名

    adb shell dumpsys window | findstr mCurrentFocus

    返回:

     其中: com.sankuai.meituan是包名,com.sankuai.meituan.activity.MainActivity是当前打开的activity类名

    查询包名的另一种方法:

    adb shell "logcat|grep -i displayed.*.meituan"

    2、开始写代码:

    1)在robotframework上写代码

    1-1)发现写的跑不通,先用appium-inspector录制一下,再改改

     1-2)生成的代码如下:

    1. from appium import webdriver
    2. caps = {}
    3. caps["platformName"] = "android"
    4. caps["appium:deviceName"] = "demo"
    5. caps["appium:appPackage"] = "com.sankuai.meituan"
    6. caps["appium:appActivity"] = "com.meituan.android.pt.homepage.activity.MainActivity"
    7. caps["appium:ensureWebviewsHavePages"] = True
    8. caps["appium:nativeWebScreenshot"] = True
    9. caps["appium:newCommandTimeout"] = 3600
    10. caps["appium:connectHardwareKeyboard"] = True
    11. driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)

    贴到pycharm上运行一下可以了,接下来把它改到robotframework上

    1-3)关键字和用例

    关键字上导入AppiumLibrary; 

    用例上导入关键字:

     运行了一下,正常打开了app

    3、接下来就开始干吧:

    还是使用appium 桌面端定位元素得到的脚本如下:

    1. from appium import webdriver
    2. from appium.webdriver.common.mobileby import MobileBy
    3. import time
    4. caps = {}
    5. caps["platformName"] = "android"
    6. caps["appium:deviceName"] = "demo"
    7. caps["appium:appPackage"] = "com.sankuai.meituan"
    8. caps["appium:appActivity"] = "com.meituan.android.pt.homepage.activity.MainActivity"
    9. caps['autoGrantPermissions']="true"
    10. #caps["appium:ensureWebviewsHavePages"] = True
    11. #caps["appium:nativeWebScreenshot"] = True
    12. #caps["appium:newCommandTimeout"] = 3600
    13. #caps["appium:connectHardwareKeyboard"] = True
    14. driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
    15. driver.implicitly_wait(5)
    16. driver.find_element(MobileBy.ID, "com.sankuai.meituan:id/permission_agree_btn").click()
    17. time.sleep(2)
    18. driver.find_element(MobileBy.ID, "com.sankuai.meituan:id/btn_open_location").click()
    19. time.sleep(2)
    20. #driver.find_element(MobileBy.ID, "com.sankuai.meituan:id/btn_ok").click()
    21. time.sleep(4)
    22. driver.find_element(MobileBy.XPATH,"//*[@content-desc='外卖']").click()
    23. time.sleep(2)
    24. driver.find_element(MobileBy.XPATH,"//*[@class='android.widget.TextView' and @index=0]").click()
    25. time.sleep(2)
    26. if driver.find_element(MobileBy.XPATH,"//*[@content-desc='关闭']"):
    27. driver.find_element(MobileBy.XPATH,"//*[@content-desc='关闭']").click()
    28. time.sleep(2)
    29. driver.find_element(MobileBy.ID,"com.sankuai.meituan:id/txt_search_normal").send_keys("蛋糕")
    30. time.sleep(2)

    转化成rf脚本:

    在这个过程中本来要使用uiautomatorviewer.bat定位元素的,结果发现这个一直报错:

     网上各种方法都试了没用,最后发现这个uiautomatorviewer.bat和我appium server不兼容;只要appium server开启了这个uiautomatorviewer.bat就开始报错

  • 相关阅读:
    【网络原理】TCP 协议中比较重要的一些特性(三)
    解析Moonbeam的安全性、互操作性和市场竞争力
    Mybatis通过pagehelper插件实现分页
    2分钟明白异或运算
    Prometheus Operator 实战 监控 etcd 集群
    数字档案室建设评价
    Redis 2 - 高级
    作业11:优化算法比较
    JAVA计算机毕业设计电脑小白网站Mybatis+系统+数据库+调试部署
    CCS:调试
  • 原文地址:https://blog.csdn.net/weixin_39430584/article/details/125917723