1
votes

Comment enregistrer un écran tout en testant dans Robot Framework Appium?

Je cherche comment enregistrer un écran sur le framework Robot Appium.J'ai vérifié sur Appium Robot Framework Doc mais il ne le décrit pas mais j'ai essayé d'écrire une bibliothèque personnalisée avec python mais ce n'est pas le cas support.

import os
import subprocess
from appium import webdriver
from robot.api import logger
desired_caps = {}
desired_caps['platformName'] = 'iOS'
desired_caps['platformVersion'] = '12.3.2'
desired_caps['bundleId'] = 'xxxxxx'
desired_caps['udid'] = 'xxxxxxx'
desired_caps['deviceName'] = 'iPhone'
driver = webdriver.Remote("http://localhost:4723/wd/hub",desired_caps)
def start_screen_recording():
    driver.start_recording_screen()
def stop_screen_recording():
    filepath = os.path.join("/Users/keo.sidara/Desktop/Mobile_Test/testcases/regression", "screen_recording_110918-205655.mp4")
    warning_message(filepath)
    payload = driver.stop_recording_screen()
    with open(filepath, "wb") as fd:
        fd.write(base64.b64decode(payload))

et j'ai reçu un message

[W3C] Correspondance du code d'erreur W3C "ID de session non valide" avec NoSuchDriverError [W3C (1530275d)] Erreur interne lors de l'exécution de la commande: NoSuchDriverError:

Quelqu'un en a-t-il l'expérience? s'il vous plaît partagez-moi. Merci


1 commentaires

Êtes-vous en mesure d'exécuter un exemple standard de Robot Framework Appium "hello world" en utilisant cet appareil?


3 Réponses :


0
votes

Je n'ai jamais utilisé Robot Framework auparavant, mais j'ai essayé de nombreuses façons d'enregistrer avec le pilote appium mais je ne pouvais pas le faire fonctionner. La seule solution que j'ai trouvée était d'utiliser les commandes ADB SHELL pour enregistrer l'écran d'un appareil. Vous devez garder à l'esprit que tous les appareils ne sont pas capables d'enregistrer leur écran.

adb pull /sdcard/test.mp4 "C:/"

adb shell rm /sdcard/test.mp4

Une fois que vous avez arrêté le processus ci-dessus, vous pouvez obtenir la vidéo de l'appareil avec ces commandes

XXX


2 commentaires

Cela fonctionne-t-il avec iOS, comme le montre l'exemple?


Non, ce n'est pas le cas. Uniquement avec Android. Désolé, je n'ai pas remarqué que c'était pour iOS.



1
votes

La documentation Appium sur la méthode d'enregistrement de démarrage est ici .

Dans la documentation d'AppliumLibrary, le code source pour le mot clé Application ouverte montre que le mot-clé renvoie le numéro de l'application dans le registre.

Cela signifie qu'il n'y a aucun moyen pris en charge par AppiumLibrary pour récupérer le pilote Web. Cela signifie qu'une modification de la bibliothèque d'origine est nécessaire. Cela a déjà été fait dans un fork: nichotined /

En supprimant la bibliothèque d'origine de votre installation python et en installant celle-ci, vous avez alors accès au mot-clé Get Current Application qui renvoie le pilote. Maintenant, vous pouvez utiliser l'approche ci-dessous ou ajouter vous-même un autre mot-clé de la même manière pour créer l'enregistrement d'écran Démarrer et arrêter personnalisé.

Comme je n'ai pas de configuration Appium fonctionnelle, je ne peux pas valider ceci moi-même:

*** Settings ***
Library    AppiumLibrary

*** Test Cases ***
    Open Application    
    ...    http://localhost:4723/wd/hub
    ...    alias=Myapp1
    ...    platformName=iOS
    ...    platformVersion=7.0   
    ...    deviceName='iPhone Simulator'
    ...    app=your.app

    ${driver}  Get Current Application


    Call Method    ${driver}    start_recording_screen


5 commentaires

J'ai essayé de suivre votre solution mais j'ai "L'objet 'AppiumLibrary' n'a pas de méthode '_current_application'." Alors, quoi de neuf ?


La première approche a-t-elle fonctionné pour vous? Je n'étais pas sûr de la seconde.


Le premier ne fonctionne pas non plus parce que peut-être que nous passons mal $ {driver}. J'essaye de consigner la sortie de $ {driver} c'est value = "1", donc c'est show me error "Object '1' does not have method 'start_recording_screen'." Alors, avez-vous une autre solution?


Mise à jour de la réponse avec une référence à une fourchette.


Je dois désinstaller la précédente Appiumlibrary et démarrer le référentiel clone que vous avez partagé et l'installer, mais le problème existe toujours. Il ne trouve pas le mot-clé Get Current Application. Aucune idée :)



1
votes

Depuis robotframework-appiumlibrary v1.5.0.6 , la prise en charge de l'enregistrement d'écran a été implémentée. Peut vérifier https://serhatbolsu.github.io/robotframework- appiumlibrary / AppiumLibrary.html # Start% 20Screen% 20Recording .

Bon codage!