7
votes

Sélection et identification d'éléments d'identification avec JQuery pour l'utiliser dans l'API Java Selenium 2

C'est la situation:

  • J'utilise l'API Java de Selenium 2 pour ouvrir et contrôler une instance de navigateur Firefox
  • i chargez le script jQuery à une page via l'exécution JavaScript
  • J'utilise ensuite jQuery expressions pour sélectionner des éléments et traverser l'arborescence DOM

    Voici ma question, puis-je trouver un identifiant unique pour chacun des éléments trouvés? Mon objectif est d'obtenir le même élément de sélénium en utilisant un sélecteur XPath ou CSS. Il serait donc très droit de générer un sélecteur sans ambiguïté pour les éléments de JQuery. D'autres idées sont les bienvenues aussi.

    J'ai besoin d'une approche automatique pour identifier des éléments de jQuery, qui peuvent être "convertis" sur des éléments / locateurs de sélénium.

    / e modifier < P> Pour le rendre plus clair:

    Si j'ai sélectionné un élément de jQuery: xxx

    maintenant, je veux quelque chose comme ceci: xxx

    est-ce possible?


1 commentaires

C'est fondamentalement l'autre direction à cette question: Stackoverflow.com/q/5605456/675065


3 Réponses :


0
votes

Pas sûr de votre problème exact, mais vous pouvez construire votre localisateur à l'aide de HTML ID, nom, attributs de classe, etc.


3 commentaires

Je sais que. Mais existe-t-il une méthode automatique qui me donne toujours un localisateur valide pour trouver un élément que j'ai sélectionné dans jQuery?


Je ne suis pas au courant de JQuery et je suppose qu'il n'y a pas de telle méthode automatique de sélénium


J'ai besoin d'une approche automatique pour identifier des éléments dans JQuery, qui peuvent être "convertis" en éléments / localisateurs de sélénium.



11
votes

J'ai trouvé la solution, qui est assez facile:

String jQuerySelector = "arguments[0]";
((JavascriptExecutor) webDriver).executeScript("return $(" + jQuerySelector+ ").doSomethingInJquery();", webElement);


6 commentaires

Pour utiliser une interface RenderedWebElement, quel paquet doit être importé en Java?


Cela aurait peut-être changé pour WebElement


Je reçois l'erreur suivante lors de l'utilisation de jQuery dans webDriver avec Java: org.openqa.selenium.webdriveexception: $ n'est pas défini (AVERTISSEMENT: le serveur n'a fourni aucune information sur StackTrace) Durée ou délai d'attente: 915 millisecondes ... Comment peut-on Je résous ceci?


Code précédent: JSE.Executscript ("$ (# gbqfq '). Cliquez sur ();"); Selon votre direction Code actuel est: JSE.Executscript ("JQuery ('# GBQFQ'). Cliquez sur ();"); Ai-je raison?


Désolé de dire, même problème: org.openqa.selenium.webdrivexception: jQuery n'est pas défini (AVERTISSEMENT: Le serveur n'a fourni aucune information sur StackTrace) Durée ou délai d'attente: 4,29 secondes. Y a-t-il une configuration pour JQuery?


Laissez-nous Continuez cette discussion en chat



1
votes

Utiliser EVAL le rend encore plus facile. Utilisez un sélecteur d'index tel que [0] avec le code JQuery ou il retournera une collection d'éléments.

    String elementLocator = "$('#btnID')[0]";
    public RemoteWebElement getElementByJQueryLocator(String jQueryLocator){
        JavascriptExecutor js = (JavascriptExecutor) driver;
        RemoteWebElement element = (RemoteWebElement) js.executeScript("return eval(arguments[0]);", jQueryLocator);
        return element;
    }

        RemoteWebElement webElement = getElementByJQueryLocator(elementLocator);
        webElement.click();


1 commentaires

Parmi toutes les réponses ci-dessus, c'est le seul qui fonctionne. Merci mon pote!