7
votes

Comment puis-je ajouter des localisateurs JQuery à la télécommande de Selenium

J'utilise XPath avec sélénium assez heureusement et même en utilisant Geteval avec un JavaScript, mais un collègue a déclaré que ce ne serait pas génial de pouvoir utiliser des sélecteurs JQuery à Selenium.

J'ai googlé, mais je ne trouve aucun article qui semble travailler pour moi. Si quelqu'un pourrait fournir un guide complet sur la manière d'utiliser la syntaxe JQuery pour extraire des éléments DOC et leurs valeurs respectives en sélénium.

J'utilise C # pour écrire mes tests de sélénium, donc si des exemples pouvaient provenir d'une perspective C #, ce serait génial.

merci


0 commentaires

3 Réponses :


0
votes

Vous auriez besoin de définir une nouvelle stratégie d'emplacement à l'aide du AddLocaStrategy doit inclure la jQuery dans votre fichier user-extensions.js.


0 commentaires

9
votes

Karl Swedberg a écrit une excellente entrée de blog à propos de celui-ci qui peut être trouvé sur http://www.learningjquerery.com/2009/04/Better-Stronger-safer-jquerify-Bookmarklet

Nous avons adapté ceci et fondamentalement dans le fichier JAR Selenium Server, nous avons modifié Remoterunner.html à inclure Le JQuery JavaScript (obtenu de http://code.jquerery.com/jquery-latest.min .js ): p> xxx pré>

puis pour activer ceci pour une utilisation dans sélénium, nous ajoutons la stratégie de localisation: p>

"C:\Program Files\Java\jdk1.6.0_22\bin\jar.exe" <arguments>


6 commentaires

J'ai trouvé cela très interstiquant! Mais la principale question est la suivante: comment pouvons-nous utiliser cette extension JQuery, par exemple. Tapez un Textarea sélectionné par JQuery?


@Andreas Vous venez d'utiliser le jQuery = pour démarrer votre expression de localisateur, puis utiliser jQuery! Exemple d'expression de localisateur (exemple intentionnel pas le plus simple): "jquery = table # myParentTableID> Input.Input-Classe"


Hé, je me suis battu avec cela pendant un moment avant de vous rendre compte que je devais mettre les balises de script mentionnées dans Remoterunner.html plutôt que Testrunner.


@RODREEEEEGEZ - Désolé de mélanger le fichier, vous avez absolument raison. Je vais mettre à jour ma réponse.


@Zugwalt: C'est juste fantastique. Mais ... y a-t-il un moyen d'ajouter un constructeur de localisateur de jQuery personnalisé à Selenium IDE en FF, de sorte que nous n'avons pas à écrire les sélecteurs jQuery manuellement, mais plutôt à les obtenir d'un cas de test enregistré?


@Pierpaolo Malheureusement, je ne sais pas comment faire ça - désolé!



0
votes

Vous pouvez lire et exécuter_script pour activer JQuery:

  • Tout d'abord, vous pouvez lire la jQuery à partir d'un fichier jquery.js ou jquery.min.js. Li>
  • Ensuite, utilisez Execute_Script (jQuery) pour activer la jQuery dynamiquement. LI>
  • Vous pouvez maintenant interagir avec jQuery. li> ul>

    Voici un certain code dans Python, une autre langue serait similaire: p> xxx pré>

    ps: quand j'utilise sélénium pour aller chercher du contenu de certains site Web, ils toujours interdire moi. Maintenant, vous devriez utiliser un proxy pour y passer.
    Voici un code: P>

    PROXY_HOST = "127.0.0.1"
    PROXY_PORT = 8087
    SOCKS_PORT = 8088
    
    fp = webdriver.FirefoxProfile()
    
    # Direct = 0, Manual = 1, PAC = 2, AUTODETECT = 4, SYSTEM = 5
    fp.set_preference("network.proxy.type", 1)
    
    fp.set_preference("network.proxy.http", PROXY_HOST)
    fp.set_preference("network.proxy.http_port", PROXY_PORT)
    fp.set_preference("network.proxy.socks", PROXY_HOST)
    fp.set_preference("network.proxy.socks_port", SOCKS_PORT)
    fp.set_preference("network.proxy.ftp", PROXY_HOST)
    fp.set_preference("network.proxy.ftp_port", PROXY_PORT)
    fp.set_preference("network.proxy.ssl", PROXY_HOST)
    fp.set_preference("network.proxy.ssl_port", PROXY_PORT)
    
    fp.set_preference("network.proxy.no_proxies_on", "") # set this value as desired
    
    browser= webdriver.Firefox(firefox_profile=fp) # with proxy
    browser = webdriver.Firefox() # no proxy
    browser.get("http://search.example.com") # Load page
    
    elem = browser.find_element_by_id("query_box") # Find the query input
    elem.send_keys(u'my query string') # send query string to the input
    elem.submit() # submit the query form
    


0 commentaires