【问题标题】:Iterating through website links and clicking them遍历网站链接并单击它们
【发布时间】:2011-11-12 02:56:24
【问题描述】:
@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>

【问题讨论】:

    标签: ruby-on-rails ruby iteration watir


    【解决方案1】:

    阅读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 中仅单击 1 个编辑链接。 cmd 输出显示“元素不再附加到 DOM”。这是真的,因为一旦单击链接,它就会消失,因为它被编程为在单击后消失并在单击保存后重新出现。但是,其他编辑链接仍然存在并且没有被点击。
    • 阅读后:watirmelon.com/2011/08/02/… 这个家伙,看起来 Watir-Webdriver 定位 DOM 元素的方式实际上阻止了您在依赖 javascript 的页面上轻松循环。
    • 看看我添加到原始答案中的部分。可能是你需要的,但我没有测试它,所以要小心我不断的错别字和错误:)
    • 感谢您的帮助,正是我所需要的!很棒的发现,不敢相信我忽略了西瓜:D.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-10
    相关资源
    最近更新 更多