Exemplo n.º 1
0
    def test_adb_cmd_server_host(self):
        adb = Adb(adb_server_host="localhost", adb_server_port=5037)
        adb.adb = MagicMock()
        adb.adb.return_value = "adb"
        adb.device_serial = MagicMock()
        adb.device_serial.return_value = "ANDROID_SERIAL"
        args = ["a", "b", "c"]
        with patch("subprocess.Popen") as Popen:
            os.name = "nt"
            adb.raw_cmd(*args)
            Popen.assert_called_once_with([adb.adb()] + args,
                                          shell=True,
                                          stdout=subprocess.PIPE,
                                          stderr=subprocess.PIPE)

        adb = Adb(adb_server_host="test.com", adb_server_port=1000)
        adb.adb = MagicMock()
        adb.adb.return_value = "adb"
        adb.device_serial = MagicMock()
        adb.device_serial.return_value = "ANDROID_SERIAL"
        args = ["a", "b", "c"]
        with patch("subprocess.Popen") as Popen:
            os.name = "posix"
            adb.raw_cmd(*args)
            Popen.assert_called_once_with([
                " ".join([adb.adb()] + ["-H", "test.com", "-P", "1000"] + args)
            ],
                                          shell=True,
                                          stdout=subprocess.PIPE,
                                          stderr=subprocess.PIPE)
Exemplo n.º 2
0
 def test_adb_from_find(self):
     with patch.dict('os.environ', {}, clear=True):
         with patch("distutils.spawn.find_executable") as find_executable:
             find_executable.return_value = "/usr/bin/adb"
             with patch("os.path.realpath") as realpath:
                 realpath.return_value = "/home/user/android/platform-tools/adb"
                 self.assertEqual(realpath.return_value, Adb().adb())
                 find_executable.assert_called_once_with("adb")  # find_exectable should be called once
                 realpath.assert_called_once_with(find_executable.return_value)
                 realpath.return_value = find_executable.return_value
                 self.assertEqual(find_executable.return_value, Adb().adb())
             find_executable.return_value = None
             call_count = find_executable.call_count
             with self.assertRaises(EnvironmentError):
                 Adb().adb()
             self.assertEqual(call_count + 1, find_executable.call_count)
Exemplo n.º 3
0
 def test_devices(self):
     adb = Adb()
     adb.raw_cmd = MagicMock()
     adb.raw_cmd.return_value.communicate.return_value = (
         b"List of devices attached \r\n014E05DE0F02000E\tdevice\r\n489328DKFL7DF\tdevice",
         b"")
     self.assertEqual(adb.devices(), {
         "014E05DE0F02000E": "device",
         "489328DKFL7DF": "device"
     })
     adb.raw_cmd.assert_called_once_with("devices")
     adb.raw_cmd.return_value.communicate.return_value = (
         b"List of devices attached \n\r014E05DE0F02000E\tdevice\n\r489328DKFL7DF\tdevice",
         b"")
     self.assertEqual(adb.devices(), {
         "014E05DE0F02000E": "device",
         "489328DKFL7DF": "device"
     })
     adb.raw_cmd.return_value.communicate.return_value = (
         b"List of devices attached \r014E05DE0F02000E\tdevice\r489328DKFL7DF\tdevice",
         b"")
     self.assertEqual(adb.devices(), {
         "014E05DE0F02000E": "device",
         "489328DKFL7DF": "device"
     })
     adb.raw_cmd.return_value.communicate.return_value = (
         b"List of devices attached \n014E05DE0F02000E\tdevice\n489328DKFL7DF\tdevice",
         b"")
     self.assertEqual(adb.devices(), {
         "014E05DE0F02000E": "device",
         "489328DKFL7DF": "device"
     })
     adb.raw_cmd.return_value.communicate.return_value = (b"not match", "")
     with self.assertRaises(EnvironmentError):
         adb.devices()
Exemplo n.º 4
0
 def test_adb_cmd(self):
     adb = Adb()
     adb.device_serial = MagicMock()
     adb.device_serial.return_value = "ANDROID_SERIAL"
     adb.raw_cmd = MagicMock()
     args = ["a", "b", "c"]
     adb.cmd(*args)
     adb.raw_cmd.assert_called_once_with("-s", "'%s'" % adb.device_serial(), *args)
Exemplo n.º 5
0
    def test_serial(self):
        serial = "abcdef1234567890"
        adb = Adb(serial)
        self.assertEqual(adb.default_serial, serial)

        adb.devices = MagicMock()
        adb.devices.return_value = [serial, "123456"]
        self.assertEqual(adb.device_serial(), serial)
Exemplo n.º 6
0
 def test_forward_list(self):
     adb = Adb()
     os.name = 'posix'
     adb.raw_cmd = MagicMock()
     adb.raw_cmd.return_value.communicate.return_value = (b"014E05DE0F02000E    tcp:9008    tcp:9008\r\n489328DKFL7DF    tcp:9008    tcp:9008", b"")
     self.assertEqual(adb.forward_list(), [['014E05DE0F02000E', 'tcp:9008', 'tcp:9008'], ['489328DKFL7DF', 'tcp:9008', 'tcp:9008']])
     os.name = 'nt'
     self.assertEqual(adb.forward_list(), [])
Exemplo n.º 7
0
    def __init__(self):
        '''
        Constructor
        '''
        self.instAdb = Adb()

        self.devSerialNoms = self.instAdb.devices().keys()
        self.devcount = len(self.devSerialNoms)
        self.devSerial = self.instAdb.device_serial()
 def check_current_activity(self, activity_name):
     ret = Adb().shell('dumpsys activity |grep mFocusedActivity')
     ret = str(ret).strip().replace("\n", "").replace("\r", "")
     self.logger.info("get current activity name: %s" % str(ret))
     if activity_name in str(ret):
         result = True
     else:
         result = False
     return result
Exemplo n.º 9
0
 def __init__(self, serial=None):
     """
     """
     logger.info('<p>Device=%s>' % serial, html=True)
     print '<p>Device=%s>' % serial
     self._result = ''
     self.starttime = 0
     self.d = Device(serial)
     self.adb = Adb(serial)
     self.debug = 'True'
Exemplo n.º 10
0
    def test_adb_cmd_server_host(self):
        adb = Adb(adb_server_host="localhost", adb_server_port=5037)
        adb.device_serial = MagicMock()
        adb.device_serial.return_value = "ANDROID_SERIAL"
        adb.raw_cmd = MagicMock()
        args = ["a", "b", "c"]
        adb.cmd(*args)
        adb.raw_cmd.assert_called_once_with("-H", "localhost", "-P", "5037",
                                            "-s", "%s" % adb.device_serial(),
                                            *args)

        adb = Adb(adb_server_host="localhost")
        adb.device_serial = MagicMock()
        adb.device_serial.return_value = "ANDROID_SERIAL"
        adb.raw_cmd = MagicMock()
        args = ["a", "b", "c"]
        adb.cmd(*args)
        adb.raw_cmd.assert_called_once_with("-H", "localhost", "-s",
                                            "%s" % adb.device_serial(), *args)
Exemplo n.º 11
0
    def test_forward_list(self):
        adb = Adb()
        adb.version = MagicMock()
        adb.version.return_value = ['1.0.31', '1', '0', '31']
        adb.raw_cmd = MagicMock()
        adb.raw_cmd.return_value.communicate.return_value = (b"014E05DE0F02000E    tcp:9008    tcp:9008\r\n489328DKFL7DF    tcp:9008    tcp:9008", b"")
        self.assertEqual(adb.forward_list(), [['014E05DE0F02000E', 'tcp:9008', 'tcp:9008'], ['489328DKFL7DF', 'tcp:9008', 'tcp:9008']])

        adb.version.return_value = ['1.0.29', '1', '0', '29']
        with self.assertRaises(EnvironmentError):
            adb.forward_list()
Exemplo n.º 12
0
    def dismiss_soft_keyboard(self):
        """
        Used to dismiss the soft keyboard on the screen

        """
        time.sleep(1)
        if "mInputShown=true" in \
                Adb(self._device.retrieve_serial_number()).cmd("shell dumpsys input_method").communicate()[
                    0].decode("utf-8"):
            self.d.press.back()
            time.sleep(1)
Exemplo n.º 13
0
    def test_device_serial(self):
        with patch.dict('os.environ', {'ANDROID_SERIAL': "ABCDEF123456"}):
            adb = Adb()
            adb.devices = MagicMock()
            adb.devices.return_value = {"ABCDEF123456": "device"}
            self.assertEqual(adb.device_serial(), "ABCDEF123456")
        with patch.dict('os.environ', {'ANDROID_SERIAL': "ABCDEF123456"}):
            adb = Adb()
            adb.devices = MagicMock()
            adb.devices.return_value = {"ABCDEF123456": "device", "123456ABCDEF": "device"}
            self.assertEqual(adb.device_serial(), "ABCDEF123456")
        with patch.dict('os.environ', {'ANDROID_SERIAL': "HIJKLMN098765"}):
            adb = Adb()
            adb.devices = MagicMock()
            adb.devices.return_value = {"ABCDEF123456": "device", "123456ABCDEF": "device"}
            with self.assertRaises(EnvironmentError):
                adb.device_serial()
        with patch.dict('os.environ', {}, clear=True):
            adb = Adb()
            adb.devices = MagicMock()
            adb.devices.return_value = {"ABCDEF123456": "device", "123456ABCDEF": "device"}
            with self.assertRaises(EnvironmentError):
                adb.device_serial()
        with patch.dict('os.environ', {}, clear=True):
            adb = Adb()
            adb.devices = MagicMock()
            adb.devices.return_value = {"ABCDEF123456": "device"}
            print(adb.devices())
            self.assertEqual(adb.device_serial(), "ABCDEF123456")

        with self.assertRaises(EnvironmentError):
            adb = Adb()
            adb.devices = MagicMock()
            adb.devices.return_value = {}
            adb.device_serial()
Exemplo n.º 14
0
    def test_adb_from_env(self):
        home_dir = '/android/home'
        with patch.dict('os.environ', {'ANDROID_HOME': home_dir}):
            with patch('os.path.exists') as exists:
                exists.return_value = True

                os.name = "posix"  # linux
                adb_obj = Adb()
                adb_path = os.path.join(home_dir, "platform-tools", "adb")
                self.assertEqual(adb_obj.adb(), adb_path)
                exists.assert_called_once_with(adb_path)
                self.assertEqual(adb_obj.adb(), adb_path)
                exists.assert_called_once_with(adb_path) # the second call will return the __adb_cmd directly

                os.name = "nt"  # linux
                adb_obj = Adb()
                adb_path = os.path.join(home_dir, "platform-tools", "adb.exe")
                self.assertEqual(adb_obj.adb(), adb_path)

                exists.return_value = False
                with self.assertRaises(EnvironmentError):
                    Adb().adb()
Exemplo n.º 15
0
 def test_adb_raw_cmd(self):
     import subprocess
     adb = Adb()
     adb.adb = MagicMock()
     adb.adb.return_value = "adb"
     args = ["a", "b", "c"]
     with patch("subprocess.Popen") as Popen:
         os.name = "posix"
         adb.raw_cmd(*args)
         Popen.assert_called_once_with(["%s %s" % (adb.adb(), " ".join(args))], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
     with patch("subprocess.Popen") as Popen:
         os.name = "nt"
         adb.raw_cmd(*args)
         Popen.assert_called_once_with([adb.adb()] + list(args), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
Exemplo n.º 16
0
    def __init__(self, **kwargs):

        adb_step.__init__(self, **kwargs)

        #  parse kwargs
        if "timeout" in kwargs:
            self.timeout = kwargs["timeout"]
        else:
            self.timeout = 10000
        if "serial" in kwargs:
            self.serial = kwargs["serial"]
        else:
            self.serial = None
        if "no_log" in kwargs:
            self.no_log = kwargs["no_log"]
        else:
            self.no_log = False

        #  constants for pass and error messages
        if self.serial:
            self._PASSM = "[ {} ] ".format(
                self.serial) + self.__class__.__name__ + " - [PASSED]"
            self._ERRORM = "[ {} ] ".format(
                self.serial) + self.__class__.__name__ + " - [FAILED]"
        else:
            self._PASSM = self.__class__.__name__ + " - [PASSED]"
            self._ERRORM = self.__class__.__name__ + " - [FAILED]"

        #  defaults pass and error messages
        self.passm = self._PASSM
        self.errorm = self._ERRORM

        #  replacing old uidevice available in testlib/external with standard
        #   uiautomator device class
        self.uidevice = Device(serial=self.serial)

        #  initialize adb connection with below to have backward compatibility
        self.adb_connection = Adb(serial=self.serial)

        #  Add Common ADB API to use instead of above hereafter
        self.adb_connection_common = connection_adb(**kwargs)

        if "version" in kwargs:
            self.version = kwargs["version"]
        else:
            self.version = self.adb_connection_common.get_prop(
                'ro.build.version.release')
Exemplo n.º 17
0
 def __init__(self, serial=None, local_port=None):
     self.uiautomator_process = None
     self.adb = Adb(serial=serial)
     self.device_port = 9008
     if local_port:
         self.local_port = local_port
     else:
         try:  # first we will try to use the local port already adb forwarded
             for s, lp, rp in self.adb.forward_list():
                 if s == self.adb.device_serial(
                 ) and rp == 'tcp:%d' % self.device_port:
                     self.local_port = int(lp[4:])
                     break
             else:
                 self.local_port = next_local_port()
         except:
             self.local_port = next_local_port()
Exemplo n.º 18
0
    def initWifiADB(self):

        '''
            通过wifi方式建立adb连接,避免了通过usb连接adb繁琐的设置以及无法使用user版本
             环境:PC与车机同一个局域网
        adb.exe需要同一个进程调用,不然会被打断,所以统一用uiautomator方法初始化
        '''

        adb = Adb()
        try:
            line = adb.raw_cmd("connect", self.get_conf_value("deviceIPaddress").strip()+":5578").communicate()[0].decode("utf-8")
            if "connected to" in line:
                return True
            else:
                raise Exception('Connect to adb fail via wifi ')
        except IOError as e:
            return False
Exemplo n.º 19
0
    def set_serial(self, serial):
        """Specify given *serial* device to perform test.
        or export ANDROID_SERIAL=CXFS42343 if you have many devices connected but you don't use this
        interface

        When you need to use multiple devices, do not use this keyword to switch between devices in test execution.
        And set the serial to each library.
        Using different library name when importing this library according to
        http://robotframework.googlecode.com/hg/doc/userguide/RobotFrameworkUserGuide.html?r=2.8.5.

        Examples:
        | Setting | Value |  Value |  Value |
        | Library | UiTestLib | WITH NAME | Mobile1 |
        | Library | UiTestLib | WITH NAME | Mobile2 |

        And set the serial to each library.
        | Test Case        | Action             | Argument           |
        | Multiple Devices | Mobile1.Set Serial | device_1's serial  |
        |                  | Mobile2.Set Serial | device_2's serial  |
        """
        self.d = Device(serial)
        self.adb = Adb(serial)
Exemplo n.º 20
0
'''
Created on 2015. 10. 22.

@author: User
'''

import os, sys
from Libs import ClsActivity as CLS

from uiautomator import Device, Adb, AutomatorDevice
from Libs import SaveToLog as saveLog
from Libs import ModelInfo
import Libs.ClsKeyCode


instAdb=Adb()
devSerials= instAdb.devices().keys()
print(type(devSerials))
osType = sys.platform
sndLog = saveLog()

#sndLog = CLS("test", "test")

if len(devSerials) == 1:
    devSerials = instAdb.device_serial()
    mstrDevice = Device(devSerials)
    mstrInfo = mstrDevice.info
else:
    mstrDevSerial, slavDevSerial = devSerials
    mstrDevice = Device(mstrDevSerial)
    slvDevice = Device(slavDevSerial)
Exemplo n.º 21
0
 def test_forward(self):
     adb = Adb()
     adb.cmd = MagicMock()
     adb.forward(90, 91)
     adb.cmd.assert_called_once_with("forward", "tcp:90", "tcp:91")
     adb.cmd.return_value.wait.assert_called_once_with()
Exemplo n.º 22
0
def allDevices():
    devices = Adb().devices().keys()
    return devices