迭代通过网站链接,并点击它们
问题描述:
@editLinks = $ie.link(:text => "Edit", :class =>"edit").links
@editLinks.each do |l| l.click
end
我有上面的代码,通过一系列称为“编辑”的链接迭代。当在网页上单击编辑时,文本框变为启用状态,并且用户能够输入它们。不同的文本框有不同的编辑链接。但是,由于某种原因,代码没有迭代或给我任何错误。它只需完成脚本而不点击任何编辑链接。我已经省略了javascript onlcick的东西来显示html。网页上的所有编辑链接也都有不同的ID。迭代通过网站链接,并点击它们
<a id="EditLinkButton" class="edit"><strong>Edit</strong></a>
答
阅读Get Elements By Attributes问题后,我建议做类似如下:
@editLinks = $ie.links
@editLinks.each do |link|
if link.attribute_value("class") == "edit" and link.text == "Edit"
link.click
end
end
有可能这样做的更好的方式,但它的作品。
编辑:
阅读下面的内容您的评论后,或许还有所沿的台词会更好
@edit_ids = %w(your edit link ids seperated by whitespace)
@edit_ids.each do |edit_id|
$ie.link(:id => edit_id).click
# whatever else you're doing
end
所以你正在寻找他们,在DOM作为这样,当你需要他们而不是存储他们,然后随着页面在测试过程中的变化而使他们的引用变得过时。值得一试。
我仍然不成功,使用您编写的代码在IE8中对我没有任何帮助,但是通过watir webdriver只能在firefox/chrome中单击一个编辑链接。 cmd输出表示“元素不再附加到DOM”。这是真的,因为一旦链接被点击,它会消失,因为它被点击后被编程为消失,并且一旦点击保存就会重新出现。但是,其他编辑链接仍然存在,不会被点击。 – Sun
阅读后:http://watirmelon.com/2011/08/02/watir-webdriver-obselete-element-error/这个家伙,它似乎像Watir-Webdriver定位DOM元素的方式实际上阻止你轻松循环在依赖于JavaScript的页面上。 – anonygoose
看看我添加到原始答案的部分。可能是你需要的,但我没有测试它,所以要小心我不断的错别字和错误:) – anonygoose