迭代通过网站链接,并点击它们

问题描述:

@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作为这样,当你需要他们而不是存储他们,然后随着页面在测试过程中的变化而使他们的引用变得过时。值得一试。

+0

我仍然不成功,使用您编写的代码在IE8中对我没有任何帮助,但是通过watir webdriver只能在firefox/chrome中单击一个编辑链接。 cmd输出表示“元素不再附加到DOM”。这是真的,因为一旦链接被点击,它会消失,因为它被点击后被编程为消失,并且一旦点击保存就会重新出现。但是,其他编辑链接仍然存在,不会被点击。 – Sun

+1

阅读后:http://watirmelon.com/2011/08/02/watir-webdriver-obselete-element-error/这个家伙,它似乎像Watir-Webdriver定位DOM元素的方式实际上阻止你轻松循环在依赖于JavaScript的页面上。 – anonygoose

+0

看看我添加到原始答案的部分。可能是你需要的,但我没有测试它,所以要小心我不断的错别字和错误:) – anonygoose