如何使用appium和python控制Android设备?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用appium和python控制Android设备?相关的知识,希望对你有一定的参考价值。

我是Appium的新手。我想通过appium控制我的Android设备,而不发送任何apk到手机。我尝试了很多例子,但在每个例子中,每个人都在推送apk然后使用touches和keypress控制它。

我不是在寻找应用程序测试,而是在寻找使用resorce id,name,class或xpath的android设备测试。

ios的程序是否也一样?

任何人都可以帮我在python中编写脚本吗?

答案

不确定appium,但AndroidViewClient/culebra可以很容易地做你想要的。

安装它,使用或不使用GUI(culebra)运行-G,您将能够自动生成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

随时实现同样的目标

另一答案

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

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

  1. 应首先设置所有环境
  2. 在输入任何代码之前,应首先运行模拟器
  3. 然后运行Appium来建立一个带IP和端口的网关。
  4. 缺少的链接是如何通过appium服务器提供的ip和端口将模拟器连接到appium。
  5. 我可以通过从sdk oolsin文件夹运行'uiautomatorviewer.bat'来检测模拟器元素,问题是数字3中的问题,是如何通过appium向模拟器发送命令。所以控制模拟器的命令基于'uiautomatorviewer.bat'给出的数据

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

学习appium中的问题是所有手动已经给出完成的脚本...没有真正的基本解释...在我的情况下,如何将appium连接到模拟器,从python控制台发送命令,并看到脚本是工作或不...

我的意思是......我们需要逐步解释脚本...因为每个初学者都需要一个实时的“反复试验”经验才能理解它的工作原理......

以上是关于如何使用appium和python控制Android设备?的主要内容,如果未能解决你的问题,请参考以下文章

自动化测试 Appium之Python运行环境搭建 Part2

利用Appium自动控制移动设备并提取数据

Android使用Appium+python控制真机,碰到的问题以及处理(持续更新)

Python爬虫编程思想(131):使用Appium抓取移动数据--控制App

Python爬虫编程思想(131):使用Appium抓取移动数据--控制App

Appium