2015-11-30 3 views
1

Я использую библиотеку AndroidViewClient для одного из моих проектов. Я столкнулся с проблемой, что мой скрипт работает хорошо на эмуляторе, но на реальном устройстве мне нужно добавить некоторые строки кода. Но я не нашел, как проверить, является ли мое устройство реальным или симулятором. Мне нужно что-л, как это:Как проверить устройство или эмулятор был запущен с помощью AndroidViewClient?

if device.isSimulator(): 
     # todo smth 
else # todo antoher 

Также я знаю, что название симулятора начинается с «эмулятор-1234», но не понять, как получить имя conncted устройства

ответ

0

Попробуйте

SensorManager manager = (SensorManager) getSystemService(SENSOR_SERVICE); 
    if (manager.getSensorList(Sensor.TYPE_ALL).isEmpty()) { 
     // running on an emulator 
    } else { 
     // running on a device 
    } 
+0

Спасибо, но на самом деле мне нужен код python, связанный с библиотекой AndroidViewClient. –

1

Я предполагаю, что вы сгенерировали базу вашего сценария с помощью culebra, если не так, возможно, ваш код также очень похож на это:

... 
device, serialno = ViewClient.connectToDeviceOrExit(**kwargs1) 

, то у вас есть serialno, который поможет вам определить, находитесь ли вы на каком-то определенном устройстве или эмуляторе.

Все эти опции будут печатать serialno:

print vc.serialno 
print device.serialno 
print serialno 

С другой стороны, если вы использовали culebra для создания модульных тестов (-U, --unit-test-class generates unit test class and script), вы можете использовать автоматически сгенерированный preconditions() способ проверить, если вы работают на реальном устройстве или эмуляторе

... 
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': 1, 'find-views-with-content-description': True, 'window': -1, 'orientation-locked': 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': False, 'find-views-with-text': True, 'prepend-to-sys-path': True, 'drop-shadow': False, 'output': '/Users/diego/tmp/serialno-test.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 
     if not re.match('emulator-.*', self.serialno): 
      self.fail("This tests only run on emulator"); 
     return True 
+0

Большое спасибо! Я постараюсь это сделать! –

Смежные вопросы