6
votes

exécuter / contrôler un émulateur sur un serveur distant

Je connais cette question qui ne convient pas pour SO mais je n'ai nulle part ailleurs à poser, j'espère obtenir une réponse avant que les mods ne la clôturent!

J'utilise donc quotidiennement quelques applications Android et cela prend beaucoup de temps. Je veux en quelque sorte automatiser le processus.

L'idée est d'installer une sorte d'émulateur sur le serveur et de programmer cet émulateur via un langage de programmation pour exécuter les applications sur le serveur lorsque cela est nécessaire.

Je suis développeur web, je travaille avec PHP , nodejs , python , pas vraiment familier avec l'espace mobile, j'ai donc pensé à demander ici.

Existe-t-il une solution pour faire ce que je veux? J'ai cherché et j'ai trouvé Appium mais je ne suis pas sûr qu'il ferait ce que je veux.

Veuillez noter que ces applications n'ont pas d'api publique que je peux utiliser.

De plus, je n'ai qu'un accès distant au serveur via 'ssh terminal', donc les solutions avec une dépendance 'GUI' ne fonctionneront pas pour moi.


2 commentaires

Vous dites qu'ils n'ont pas d'API publique , mais en ont-ils peut-être une privée que certains cookies intelligents ont rétro-ingénierie? Exemple: github.com/Jamonek/Robinhood


@Dylan est facile de trouver l'API à l'aide d'outils comme Fiddler, mais ils utilisent le cryptage pour envoyer et recevoir des données et il est presque impossible de trouver une méthode de cryptage sans accès au code source


3 Réponses :


3
votes

Vous pouvez utiliser un émulateur, comme Bluestacks, puis exécuter un script pour exécuter des applications, puis utiliser l'outil de macro pour émuler les clics dans les jeux ou les applications.

vérifier ce lien pour l'outil de macro dans bluestacks: https: //www.bluestacks .com / blog / bluestacks-exclusives / combo-key-bluestacks-record-replay-action-single-key-en.html

Ou vous pouvez écrire un script qui utilise des commandes adb pour exécuter et contrôler l'application.

Par exemple. pour exécuter des applications. adb shell am start -n com.android.settings / .Settings cette commande ouvrira l'application des paramètres dans l'émulateur.

pour envoyer des événements tactiles, vous pouvez utiliser: adb shell input touch

adb shell input keyevent <keycode> to send keycodes


2 commentaires

merci, bluestacks semble très sympa mais il semble avoir besoin d'une interface graphique pour fonctionner et je travaille avec un serveur distant via un terminal ssh ... je recherche une solution qui peut être activée / contrôlée via un code de programmation pas une interface graphique


adb semble plus adapté à ce que je veux mais je préférerais autre chose que le script shell ... de préférence nodejs / js bcuz de flexibilité il apporte comme possibilité de travailler avec des requêtes http, base de données, ....



1
votes

Je suppose que vous souhaitez automatiser les applications Android natives.

Réponse courte: Appium sera une bonne solution pour vous.

Sur votre serveur distant, vous aurez besoin de:

Avec tout ce qui est installé, vous pourrez démarrer les nœuds Appium sur votre serveur et exécuter des scripts Appium contre eux.

Je suggère d'utiliser le serveur CI de votre choix pour automatiser ce processus. Cela devrait faciliter le démarrage de votre terminal de test via ssh plus facile / 100% automatisé.

Je n'ai jamais utilisé Selenium / Appium en python, donc je ne peux pas vraiment vous aider avec des exemples de code de tests Appium, mais je suis sûr qu'il existe de nombreux tutoriels de base pour python.


2 commentaires

merci, je vais utiliser nodejs pas python (si possible), je suis très nouveau dans cet espace .... pouvons-nous garder l'application ouverte sur l'émulateur et l'utiliser sur une période de temps ou elle ouvrirait l'application chaque fois que nous besoin de l'utiliser?


Je suis tout à fait sûr que vous pouvez configurer Appium pour utiliser une application déjà en cours d'exécution, mais je pense qu'il serait préférable pour la stabilité de votre script de faire un nouveau départ de votre application lorsque vous devez faire quelque chose. Quant à python, ce n'est pas pour vous. Le nœud Appium en a besoin pour une raison quelconque (ou du moins appium-doctor pense que c'est le cas).



1
votes

Vous devez installer AppiumServer et android sdk / simulator sur le serveur distant. Je vais montrer comment cela peut être fait en java. J'espère que vous pourrez le convertir en code javascript.

Vérifiez l'adresse IP de votre serveur distant en utilisant ipconfig^

Démarrez votre serveur appium sur le serveur distant

AppiumDriver<MobileElement> driver;
DesiredCapabilities caps= new DesiredCapabilities();
caps.setCapability(MobileCapabilityType.DEVICE_NAME, "android device");
caps.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID);
caps.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, 300);
caps.setCapability(MobileCapabilityType.AUTOMATION_NAME, "uiautomator2");
caps.setCapability("appPackage", "enter your appPackage");
caps.setCapability("appActivity", "enter your appActivity");

driver= new AndroidDriver<MobileElement>(new URL("remote server ip address" + ":4732/wd/hub"), caps);

Démarrez l'émulateur sur le serveur distant.

Définissez et initialisez DesiredCapabilities et AppiumDriver dans votre code comme suit.

>appium -a "ip address of remote server" -p 4732 --session-override

Assurez-vous que les deux appareils sont sur le même réseau. vous devez obtenir une réponse lors du ping à l'adresse IP du serveur distant


0 commentaires