2 votes

Pourquoi Selenium n'utilise pas JS ?

Je suis un noob qui apprend depuis quelque temps le Javascript dans le seul but de l'utiliser pour écrire des automations Selenium (le but ultime est d'apprendre l'automatisation de l'assurance qualité).

Le problème, c'est que je suis totalement perdue en ce qui concerne la langue. Tout ce que je vois dans la documentation Selenium et les exemples scritp sont des fonctions comme "driver.FindElement", "sendKeys", "getTitle", etc.

D'après ce que j'ai appris, le Javascript (pur) n'utilise pas ces fonctions mais plutôt "document.getElementById", "document.title", etc.

Pouvez-vous m'aider à identifier le langage que Selenium utilise lorsqu'il dit "sendKeys" ? Pourquoi dans toute la documentation que je trouve sur Selenium+Javascript, je ne vois que "getTitle" au lieu de "document.title" ? Ce que j'ai appris sur le JS pur n'est pas applicable à cet outil ?

Je sais que c'est probablement l'une des questions les plus stupides que vous ayez vues, mais je ne peux pas continuer à apprendre tant que je ne comprends pas ce qui se passe ici. Merci !

0 votes

Selenium + JavaScript a sa propre syntaxe, alors que les méthodes et propriétés JavaScript courantes comme document.title peut toujours être utilisé via JavaScriptExecutor

0 votes

Je vois, merci ! Laquelle des deux options choisirais-tu pour écrire des scripts d'automatisation ? Je ne sais vraiment pas ce qui est le plus utilisé dans le poste d'automatisation de l'AQ, et donc lequel augmentera les chances d'être embauché.

0 votes

Non. JavaScriptExecutor n'est pas un outil distinct, mais une méthode de Selenium qui permet d'exécuter du JavaScript pur. Je ne suis pas sûr de la syntaxe, mais son utilisation ressemblera à peu près à ceci var title = driver.executeScript('return document.title;')

1voto

yong Points 8589

El document.getElementById y document.title est l'API HTML DOM de JavaScript. Vous pouvez l'utiliser pour écrire l'automatisation script en JavaScript.

Mais vous devez exécuter une telle automatisation script côté navigateur, soit dans la console DevTool du navigateur, soit vous faites la page HTML inclut votre automatisation script via <script src='<your automation script><script>' dans le code source de la page.

Réfléchir à la façon dont vous pouvez injecter votre script d'automatisation dans une page web d'un site qui ne vous appartient pas. Et même si vous testez votre site web propriétaire, votre automatisation script sera chargée et exécutée tant que la page se charge. Il est difficile pour vous de gérer le processus d'exécution, de packager votre site web pour inclure l'automatisation script sur la page de votre site, etc. Et utilisez JavaScript pour écrire l'automatisation script uniquement.

Utiliser cette méthode pour automatiser une page Web n'est donc pas une solution judicieuse.

Selenium est un outil d'automatisation du Web reposant sur Webdriver. Webdriver agit comme un proxy entre l'API Selenium et le navigateur réel. Chaque fournisseur de navigateur développera et maintiendra son propre webdriver (Webdriver est un binaire exécutable), mais tous les fournisseurs de navigateurs doivent suivre la spécification W3C de Webdriver pour mettre en œuvre son propre wedriver, de sorte que lorsque votre script appelle la même API Selenium sur la même page dans différents navigateurs, vous pouvez obtenir le même résultat.

Comme driver.findElement y driver.sendKeys sont des API selenium que vous utilisez pour composer votre script d'automatisation. Et selenium fournit différentes API de langage, comme python, javascript, Java, ruby, c#, VBA, perl, php. Vous pouvez choisir votre langage script préféré. Le nom de la méthode, l'utilisation sont différents sur l'API de langue différente.

Le binaire Webdriver ne peut accepter que les requêtes http, il ne peut pas exécuter les méthodes/fonctions de l'API Selenium. Vous pouvez penser que lorsque le binaire webdriver démarre, un serveur http s'exécute à l'intérieur de celui-ci pour accepter la requête http envoyée par votre script d'automatisation.

En fait, les API selenium de chaque langue ont été implémentées pour traduire toutes les méthodes des API en une requête http, puis envoyer la requête au binaire webdriver en cours d'exécution, et enfin le binaire webdriver traduira la requête http en actions sur le navigateur.

Toutes les implémentations du binaire WebDriver qui communiquent avec le navigateur utilisent un protocole filaire commun. Ce protocole définit un service web RESTful utilisant JSON sur HTTP, appelé The WebDriver JSON Wire Protocol Plus de détails à l'adresse aquí .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X