Passer existant Webdriver objet personnalisé bibliothèque Python pour Robot Cadre
Je suis en train de créer une bibliothèque Python pour Robot de Cadre, mais je suis nouveau sur Python et Robot et je ne suis pas sûr de la façon d'accomplir ce que je suis en train de faire. Je veux passer le Webdriver objet Robot crée à l'aide de Selenium2Library à mon habitude bibliothèque Python pour que je puisse utiliser le Webdriver de méthodes, telles que find_element_by_id
. J'ai vu quelques suggestions sur la façon de le faire ici et ici, mais ils sont pour les bibliothèques Java - je ne peux pas trouver toutes les instructions Python.
Comment pourrais-je aller sur le faire en Python? Ou aurais-je envie de faire les choses différemment, sans passer le Webdriver objet?
OriginalL'auteur Anastasya Lundquist | 2014-05-16
Vous devez vous connecter pour publier un commentaire.
Il n'y a rien construit dans la bibliothèque pour vous permettre de faire ce que vous voulez soi. Toutefois, vous pouvez créer votre propre bibliothèque qui peut accéder sélénium fonctionnalités. Il y a deux façons de le faire, à la fois, qui nécessitent la création de votre propre bibliothèque en python. Ces méthodes sont à la sous-classe Selenium2Library, ou pour obtenir une référence à la Selenium2Library instance.
Création d'une bibliothèque personnalisée que les sous-classes Selenium2Library
Un moyen d'accéder à l'intérieur de Selenium2Library est d'écrire une bibliothèque de classe qui hérite de Selenium2Library. Lorsque vous faites cela, vous avez accès à tout le contenu de la bibliothèque d'origine. Vous pouvez ensuite retourner une référence à la WebDriver objet, ou vous pouvez simplement écrire vos propres mots-clés dans python.
Comme un exemple, voici un personnalisé du sélénium bibliothèque a un nouveau mot-clé qui sera de retour l'actuel WebDriver instance. Il le fait en appelant le privé (à l'origine Selenium2Library) méthode
_current_browser
. Puisque c'est une méthode privée, il n'y a aucune garantie qu'il résistera à l'épreuve du temps, mais au moment où j'écris cela, il existe.Créer un personnalisé du sélénium bibliothèque
Tout d'abord, créez un nouveau fichier nommé python CustomSeleniumLibrary.py. Le mettre où le robot peut trouver -- la chose la plus simple est juste de la mettre dans le même dossier que d'une suite de test qui va l'utiliser. Placez la ligne suivante dans ce fichier:
Créer un cas de test qui utilise la bibliothèque
Ensuite, écrivez un cas de test qui utilise ce lieu de Selenium2Library. Par exemple:
Exécuter le test
Exécuter le test comme vous le feriez pour tout autre test. Lorsqu'elle est terminée, vous devriez voir quelque chose comme ceci dans le journal:
À l'aide de l'objet dans un cas de test
Énigmatique
...<selenium....WebDriver object...>
message prouve que la variable contient en fait une référence à l'python WebDriver objet. À l'aide de la étendue variable syntaxe de robot, vous pouvez appeler les méthodes et les attributs d'accès sur cet objet si vous le souhaitez. Je ne recommande pas de le faire de cette façon, mais je pense que c'est vraiment intéressant de noter que le robot prend en charge:Création d'une bibliothèque personnalisée qui fait référence à Selenium2Library
La deuxième façon d'y parvenir est l'utilisation du robot méthode pour obtenir une instance d'une bibliothèque, à laquelle vous pouvez accéder à l'objet autant que vous le souhaitez. Ceci est documenté dans le robot guide de l'utilisateur; voir L'activité de la bibliothèque de l'instance de Robot Cadre dans le Robot Cadre-Guide de l'Utilisateur.
Par exemple, la get_library_instance mot-clé à partir de l'exemple ci-dessus ressemblerait à ceci:
Noter que dans ce cas, vous devez inclure à la fois le Selenium2Library et votre bibliothèque personnalisée:
OriginalL'auteur Bryan Oakley
Prendre un coup d'oeil au Robot Cadre Guide de l'Utilisateur exemple:
L'activité de la bibliothèque de l'instance de Robot Cadre
Le plus grand avantage sur l'héritage (comme une réponse avant), c'est que vous pouvez utiliser la bibliothèque d'origine, normalement, et l'utilisation de la nouvelle bibliothèque en plus en cas de besoin.
OriginalL'auteur
Vous n'avez pas besoin robotf-ramework à "Ouvrir le navigateur" et de créer toutes les étapes dans le robot. Vous pouvez simplement utiliser le robot comme un séquenceur et d'appeler à partir de robot régulière des scripts python avec le sélénium (installer le sélénium avec pip). Ensuite, dans le robot, vous aurez une suite de tests réguliers de petits scripts python avec le sélénium. C'est un peu plus d'avance en ce qui concerne les compétences de programmation, mais vous allez utiliser plus standard codding syntaxe dans les scripts python robot est piloté par mots-clés style. Donc, vous pouvez encapsuler tous les détails dans les scripts python et de les exposer uniquement de haut niveau de robot (via une suite de tests).
OriginalL'auteur DanR