2

我在将一些样本测试/规范从 Watir 转换为 Selenium 方面做得更进一步。在我在这里提出最后一个问题并建议回复之后,我开始使用带有 WebDriver 的 Selenium 2.0 而不是 Selenium 1。

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

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

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

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

4

2 回答 2

2

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

@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

于 2010-11-09T19:32:59.213 回答
0

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

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

于 2013-04-14T04:15:46.130 回答