Selenium 2.0 Webdriver&Ruby,除.text之外的链接元素方法? Navigate.to数组中的链接?

我在将一些样品测试/规格从Watir转换为Selenium时更进一步。 在我的最后一个问题和建议的回复后,我开始使用Selenium 2.0与WebDriver而不是Selenium 1。

有问题的例子涉及将表中的所有链接收集到一个数组中 – 该部分是完整的。 但是,一旦链接在数组中,我可以与它们交互的唯一有意义的方式似乎是.text。 使用@ driver.navigate.to Array [1]在浏览器中显示URL格式错误,link.href或.src不是有效选项。

Watir实现收集了这些链接(用户通过CMS添加的页面),将它们存储在一个数组中,然后逐个访问每个页面,提交一个潜在客户表单。 我相信我可以使用Selenium工作并重新访问包含提交表单提交之间所有链接的“主页”页面,但这可能意味着数百个额外的页面加载,缓存与否。

到目前为止的代码:’@ country = 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' 

我在selenium-webdriver文档中找到的最接近的项目是(字符串).attribute方法,但同样,我不确定哪些属性

我不确定使用属性方法的格式,但经过一些实验,我能够超越这一步。

@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

看起来你自己找到了问题的答案。

实际上,element.attribute允许您提取标记可能具有的任何HTML属性。 因此,由于您想要拉取元素的URL,因此使用了element.attribute('href')来返回元素的href =“”属性。 对于任何其他属性也可以这样做,包括类,id,样式等。