【问题标题】:How to control android device using appium and python?如何使用 appium 和 python 控制安卓设备?
【发布时间】:2018-09-13 00:39:19
【问题描述】:

我是 Appium 的新手。 我想通过 appium 控制我的 android 设备,而不向手机发送任何 apk。 我尝试了很多示例,但在每个示例中,每个人都在推送一个 apk,然后使用触摸和按键来控制它。

我不是在寻找应用程序测试,而是在寻找使用资源 ID、名称、类或 xpath 的 android 设备测试。

iOS 的程序也会保持不变吗?

谁能帮我用python写一个脚本?

【问题讨论】:

    标签: android python selenium appium android-uiautomator


    【解决方案1】:

    不确定appium,但AndroidViewClient/culebra可以轻松做你想做的事。

    安装它,使用或不使用 GUI (-G) 运行 culebra,您将能够自动生成 python 测试或纯脚本。

    例如,如果你运行

    $ culebra -GuU --scale=0.5 -o chrome.py
    

    当设备在主屏幕上并单击 Chrome 图标将其打开时,将生成此脚本

    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    """
    Copyright (C) 2013-2018  Diego Torres Milano
    Created on 2018-04-04 by Culebra v15.1.2
                          __    __    __    __
                         /  \  /  \  /  \  /  \ 
    ____________________/  __\/  __\/  __\/  __\_____________________________
    ___________________/  /__/  /__/  /__/  /________________________________
                       | / \   / \   / \   / \   \___
                       |/   \_/   \_/   \_/   \    o \ 
                                               \_____/--<
    @author: Diego Torres Milano
    @author: Jennifer E. Swofford (ascii art snake)
    """
    
    
    import re
    import sys
    import os
    
    
    import unittest
    
    from com.dtmilano.android.viewclient import ViewClient, CulebraTestCase
    
    TAG = 'CULEBRA'
    
    
    class CulebraTests(CulebraTestCase):
    
        @classmethod
        def setUpClass(cls):
            cls.kwargs1 = {'ignoreversioncheck': False, 'verbose': False, 'ignoresecuredevice': False}
            cls.kwargs2 = {'forceviewserveruse': False, 'useuiautomatorhelper': False, 'ignoreuiautomatorkilled': True, 'autodump': False, 'startviewserver': True, 'compresseddump': True}
            cls.options = {'start-activity': None, 'concertina': False, 'device-art': None, 'use-jar': False, 'multi-device': False, 'unit-test-class': True, 'save-screenshot': None, 'use-dictionary': False, 'glare': False, 'dictionary-keys-from': 'id', 'scale': 0.5, 'find-views-with-content-description': True, 'window': -1, 'orientation-locked': None, 'concertina-config': None, 'save-view-screenshots': None, 'find-views-by-id': True, 'log-actions': False, 'use-regexps': False, 'null-back-end': False, 'auto-regexps': None, 'do-not-verify-screen-dump': True, 'verbose-comments': False, 'gui': True, 'find-views-with-text': True, 'prepend-to-sys-path': False, 'install-apk': None, 'drop-shadow': False, 'output': 'chrome.py', 'unit-test-method': None, 'interactive': False}
            cls.sleep = 5
    
        def setUp(self):
            super(CulebraTests, self).setUp()
    
        def tearDown(self):
            super(CulebraTests, self).tearDown()
    
        def preconditions(self):
            if not super(CulebraTests, self).preconditions():
                return False
            return True
    
        def testSomething(self):
            if not self.preconditions():
                self.fail('Preconditions failed')
    
            _s = CulebraTests.sleep
            _v = CulebraTests.verbose
    
            self.vc.dump(window=-1)
            self.vc.findViewWithContentDescriptionOrRaise(u'''Chrome''').touch()
            self.vc.sleep(_s)
            self.vc.dump(window=-1)
    
    
    if __name__ == '__main__':
        CulebraTests.main()
    

    然后你可以运行它

    $ ./chrome.py
    

    随时实现同样的目标

    【讨论】:

    • @Zoe Fair,但是没有描述问题,只是没有发送任何apk
    【解决方案2】:

    我认为问题和我的一样...想用 Appium 控制安卓设备或模拟器,可能是 Mayank Shivhare 已经尝试学习 culebra 并发现...... culebra 仍然不支持 python 3然而(像我一样喜欢 python 3.7 而不是 python 2.7 的问题)。

    我也有同样的问题……,我现在理解的是:

    1. 首先要设置好所有环境

    2. 应先运行模拟器...在输入任何代码之前

    3. 然后运行 ​​Appium 做一个带 IP 和端口的网关。

    4. 缺少的链接是如何通过appium服务器提供的ip和端口将模拟器连接到appium。

    5. 我可以通过在sdk\tools\bin 文件夹中运行'uiautomatorviewer.bat'来检测模拟器元素,问题是第3 个问题,是如何通过appium 向模拟器发送命令。所以控制模拟器的命令基于'uiautomatorviewer.bat'给出的数据

    编码是关于试错的,所以我们需要实时交互来构建源代码。每个开发人员都对构建脚本或源代码感兴趣。所以..作为初学者,我们需要实时交互来显示脚本每一步中的每一个错误,或者确保我们键入的每一行脚本在 android 设备或模拟器中顺利运行。

    learn appium 中的问题是所有手动已经给出完成的脚本...没有真正非常基本的解释...在我的情况下,如何将 appium 连接到模拟器,从 python 控制台发送命令,然后查看脚本工作与否……

    我的意思是...我们需要逐步解释脚本...因为每个初学者开发人员都需要现场“试错”体验以了解其工作原理...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-13
      • 2018-05-18
      • 1970-01-01
      • 2019-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多