Enregistrement des Actions en Sélénium
J'ai un semi-vague question à poser à propos de Sélénium. J'ai découvert quelques différentes façons d'effectuer des actions à l'aide de la FirefoxDriver. Ce dont j'ai besoin pour faire est de répéter les actions qu'un utilisateur effectue sur une page web (en cliquant sur un lien, cocher une case, etc.). Existe t'il une méthode ou combinaison de méthodes qui me permet "d'enregistrer" les actions de l'utilisateur? Voici ce que j'ai jusqu'à présent pour effectuer des actions (vous remarquerez que j'ai essayé d'utiliser le WebDriverBackedSelenium et les Actions des classes pour effectuer des actions)
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriverBackedSelenium;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.interactions.Action;
public class MyReplayer {
public static void main(String[] args) throws Exception {
//The Firefox driver supports javascript
FirefoxDriver driver = new FirefoxDriver();
driver.get("http://www.cs.umd.edu");
List<WebElement> elements = driver.findElements(By.tagName("a"));
//WebDriverBackedSelenium driverBacked = new WebDriverBackedSelenium(driver, "http://www.cs.umd.edu");
Actions builder = new Actions(driver);
Action clickLink = builder.click(elements.get(100)).build();
clickLink.perform();
//driverBacked.click("document.getElementsByTagName('a')[100]");
}
}
OriginalL'auteur user1294114 | 2012-03-26
Vous devez vous connecter pour publier un commentaire.
Je suis tombé sur Huxley. Il permet l'enregistrement et la lecture des actions de l'utilisateur. J'ai trouvé cette question, à la recherche de la façon dont ils l'ont fait, mais a dû recourir à du code source.
Lignes 98-154 de huxley/run.py définir la fonction d'enregistrement. Il utilise webdirvier d'exécuter certaines js sur la page qui ajoute des écouteurs d'événement. Il ajoute également une fonction pour renvoyer les événements.
À lire les événements de la js fonction est appelée
Ensuite les événements sont stockés dans un chemin qui semble spécifique à l'application.
Désolé, je n'ai pas de code Java. J'espère que cette aide.
OriginalL'auteur sep
Vous pouvez utiliser le Selenium IDE Addon pour Firefox et exporter le test générés pour Webdriver. Cela ne veut pas spécialement dire FirefoxDriver, mais les méthodes de l'interface similaire à ce que vous avez posté. J'espère que cette aide.
Je ne sais pas comment Selenium IDE t-il. Mais je pense qu'ils attrapent les événements de changement dans le DOM de la page que vous êtes en train de regarder. Je ne sais pas combien ils sont intégrés au Navigateur interface graphique, mais qui se produit peut-être trop. La plupart de ce qui peut être trouvé sur le côté serveur, mais de savoir si une case est cochée sans envoyer la page au serveur ne peut se faire que sur le client (ou vous aurez à faire des appels ajax pour tout)
OriginalL'auteur ma cılay
Je suis actuellement en train de travailler sur un projet qui fait quelque chose comme ceci: https://github.com/hristo-vrigazov/selenium-record-replay
Il fonctionne en mettant un proxy entre le navigateur et l'application, et l'injection de javascript, qui écoute les actions que vous avez définies. Voir, par exemple, https://github.com/hristo-vrigazov/selenium-record-replay/blob/master/terminator-cli/src/main/java/browser/Main.java#L74
Le projet en est encore à un stade très précoce, mais il peut être utilisé même maintenant. Actuellement, seul Chrome est pris en charge, mais je vais bientôt ajouter d'autres navigateurs aussi bien.
Disclaimer: je suis le créateur et mainteneur du projet
OriginalL'auteur Hristo Vrigazov