Marionette pour du Pyhton interactif

Ce tutoriel suppose que vous avez configuré Marionette pour B2G.

Ouvrez un terminal et lancez Python pour obtenir l'invite interactive :

$ python

Depuis l'invite interactive, exécutez les commandes nécessaire pour invoquer une session Marionette de manière interactive :

>>> from marionette import Marionette
>>> marionette = Marionette('localhost', 2828)
>>> marionette.start_session()
 u'session-b2g'

Ici, nous voyons que le système renvoie qu'une session Marionette est en cours d'exécution.

La commande "marionette.execute_script()" peut intégrer des commandes JavaScript, qui peuvent ensuite s'exécuter sur une plateforme B2G. En utilisant ceci, nous pouvons voir quels éléments DOM renvoient des objets HTMLElement ainsi que les attributs et méthodes disponibles :

>>> marionette.execute_script("return navigator.battery;")
{u'onlevelchange': None, u'level': 0.91, u'dischargingTime': None, u'onchargingchange': None, u'ondischargingtimechange': None, u'onchargingtimechange': None, u'chargingTime': None, u'charging': True}
>>> marionette.execute_script("return navigator.battery.level;")
0.91
>>> marionette.execute_script("return navigator.geolocation;")
{}
>>> marionette.execute_script("return navigator.mozSms;")
{u'onreceived': None, u'ondelivered': None, u'onsent': None}

Vous pouvez parcourir l'arbre DOM en utilisant cette technique pour évaluer quels objets, méthode et attributs sont disponibles.

Tester la téléphonie basique de manière interactive

Vous pouvez tester de manière interactive la téléphonie de base avec Marionette.  L'exemple suivant nécessite deux téléphones en état de fonctionnement, chacun ayant sa carte sim. L'un d'eux est notre Galaxy SII, avec B2G en cours d'exécution.

Lancez une session Marionette interactive  et transférez le port :

$ adb forward tcp:2828 tcp:2828
$ python
>>> from marionette import Marionette
>>> marionette = Marionette('localhost', 2828)
>>> marionette.start_session()
u'5-b2g

À présent, deux approches sont possibles avec Marionette.  L'une d'elles est un peu plus Pythonesque :

>>> marionette.set_context("chrome")
True
>>> marionette.execute_script("return navigator.mozTelephony;")
>>> num =
>>> marionette.execute_script("return navigator.mozTelephony.dial('%d');" % num)

Ou la seconde approche qui repose plus sur du JS (embarqué dans marionette.execute_script() ) Remarquez les guillemets autour de la variable JS nombre :

>>> marionette.set_context("chrome")
True
>>> marionette.execute_script("""
... var num = ""
... return navigator.mozTelephony.dial(num);
... """)
{}

Nous allons essayer la première approche :

Ceci démarre un appel téléphonique, dont la sortie peut être contrôlée dans $adb logcat

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : jwhitlock, SphinxKnight, Goofy, J.DMB
 Dernière mise à jour par : jwhitlock,