【问题标题】:Deleting elements using Watir使用 Watir 删除元素
【发布时间】:2011-10-29 02:06:27
【问题描述】:

有谁知道如何使用 Watir 从源中删除元素?似乎没有删除元素的方法。也许我错过了什么。

【问题讨论】:

  • 我不认为这是 Watir 功能的一部分。我可以问一下您通过从源中删除一个元素来达到什么目的吗?有人可能会推荐另一种可以更好地帮助您完成您想做的事情的宝石。
  • @anonygoose 是正确的。 Watir 用于运行测试。您能否更具体地从源中删除?您想保存源代码并在本地进行编辑吗?也许看看 Nokogiri 和 Mechanize 宝石。

标签: ruby watir


【解决方案1】:

如果您了解 JavaScript,则可以在页面上执行任何 JavaScript 代码。

例子:

browser.execute_script("some javascript code")

我不是 JavaScript 忍者,但这个问题可以帮助你:JavaScript: remove element by id

【讨论】:

    【解决方案2】:

    通过 css 移除元素:

    browser.execute_script("[...document.querySelectorAll('.some.class')].map(e => {e.parentNode.removeChild(e)})")
    

    【讨论】:

      【解决方案3】:

      Watir 的目的是进行 Web 测试,也就是说,驱动浏览器就像用户正在与它进行交互一样。这意味着做用户可以做的事情、点击内容、填写输入字段等。这还意味着能够验证用户可以看到或与之交互的屏幕上的内容。

      由于用户无法删除元素,因此无法使用该工具执行此操作。

      如果应用程序为用户提供了一种“删除”或“删除”某些内容的方法,例如关闭模拟窗口、删除选项卡等,那么您需要通过模拟用户会做的事情来做到这一点(通常单击一些特定元素)才能实现。

      【讨论】:

      • 我认为 Capybara 更像是一个测试框架,而 Watir 更像是一个抓取工具。 YMMV 不过,每个人都有不同的需求。此外,作为(有点高级的)用户。我一直从控制台删除元素。
      • Watir 代表 Ruby 中的 Web 应用程序测试。它绝对是作为测试工具设计的,而不是抓取工具。在整个历史上都是这样watir.com/history。是的,你可以从控制台做很多事情。但那是一个开发者工具,不是 98% 的浏览器用户接触过的东西
      【解决方案4】:

      我们可以使用 javascript 将其删除。这是一个删除面包屑 div 元素的示例,但它是 id:

      browser.execute_script("bd = document.getElementById('breadcrumbs'); bd.parentNode.removeChild(bd);")
      

      【讨论】:

        猜你喜欢
        • 2015-07-08
        • 1970-01-01
        • 1970-01-01
        • 2012-09-01
        • 2018-01-25
        • 2023-04-11
        • 1970-01-01
        • 1970-01-01
        • 2020-06-07
        相关资源
        最近更新 更多