2010-11-09 3 views
2

Je suis un peu plus loin dans la conversion de certains échantillons/spécifications de Watir à Selenium. Après ma dernière question ici et réponse suggérée, j'ai commencé à utiliser Selenium 2.0 avec WebDriver au lieu de Selenium 1.Selenium 2.0 Webdriver & Ruby, méthodes d'éléments de liens autres que .text? Navigate.to liens dans le tableau?

L'exemple en question concerne la collecte de tous les liens dans une table dans un tableau - cette partie est terminée. Cependant, une fois que les liens sont dans le tableau, la seule manière significative que je puisse interagir avec eux semble être .text. L'utilisation de @ driver.navigate.to Array [1] donne une erreur de format d'URL dans le navigateur, et link.href ou .src ne sont pas des options valides. L'implémentation de Watir a rassemblé ces liens (pages ajoutées par les utilisateurs via CMS), les a stockés dans un tableau, puis a visité chaque page une par une, en soumettant un formulaire d'avance. Je crois que je pourrais obtenir ce travail en utilisant Selenium et en revisitant la page d'accueil qui contient tous les liens entre les soumissions de plomb, mais cela pourrait signifier des centaines de charges de pages supplémentaires, mises en cache ou non.

Le code jusqu'à présent: '@countries = Array.new

@browser.navigate.to "http://www.testingdomain{$env}.com/global" 
@browser.find_elements(:xpath, "//table[@class='global-list']//a").each do |link|  
    @countries << [link.text, link.href] ## The original WATIR line that needs an update 
end #links 

@countries.uniq! #DEBUG for false CMS content' 

Le plus proche point que je pouvais trouver dans la documentation sélénium WebDriver était la méthode .attribute (chaîne), mais encore une fois, je suis incertain de quels attributs

+2

Vous pouvez regarder watir-webdriver, qui fournit l'API Watir sur le WebDriver tech: http: // github. com/jarib/watir-webdriver – jarib

+0

Merci Jarib, je l'ai regardé et je vais certainement le tester avec Selenium 2/Webdriver. –

Répondre

2

Je n'étais pas sûr du format à utiliser avec la méthode d'attribut, mais après quelques expériences, j'ai été capable de passer cette étape.

@countries = Array.new

@browser.navigate.to "http://www.testingdomain{$env}.com/global"

@browser.find_elements(:xpath, "//table[@class='global-list']//a").each do |link|
text = link.attribute("text")
href = link.attribute("href")
@countries << [text, href]
end #links
`@countries.uniq! #DEBUG for false CMS content

0

On dirait que vous avez trouvé la réponse à votre question par vous-même.

En effet, element.attribute vous permet d'extraire tout attribut HTML qu'une balise pourrait avoir. Ainsi, puisque vous vouliez extraire l'URL de l'élément, vous avez utilisé element.attribute('href') pour renvoyer l'attribut href = "" de l'élément. La même chose peut être faite pour tous les autres attributs, y compris la classe, id, style, etc

Questions connexes