【问题标题】:Ruby Selenium Web Driver: How to count child element nodes of a specific nodeRuby Selenium Web Driver:如何计算特定节点的子元素节点
【发布时间】:2017-08-31 19:50:17
【问题描述】:

我是新手 selenium 程序员,请帮我解决这个问题...

我有以下 html 并且正在尝试计算元素 <div class="result-controls"> 的子节点,即 4 个(1 个 div 和 3 个 li 元素)

<div class="result-controls">
   <div class="attachment">
      <li class="add-attachment-button-column"><a><button>ADD ATTACHMENTS</button></a></li><input type="file" multiple="" style="display: none;">
   </div>
   <li class="sign-button-column"><a href="javascript:void(0)"><button>SIGN</button></a></li>
   <li class="draft-button-column"><a><button>DRAFT</button></a></li>
   <li class="delete-column"> <a href="javascript:void(0)"><svg class="glyphicon-trash" viewBox="0 0 100 100"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#trash"></use></svg> </a></li>
</div>

目前正在单独计算计数如下(row 变量具有以上 html)

  li_actions_count = row.find_elements(:xpath => "./li").length
  div_actions_count = row.find_elements(:xpath => "./div").length

谁能帮助我用一个简单的方法在 Ruby 中使用 selenium 网络驱动程序来做到这一点

【问题讨论】:

    标签: ruby selenium xpath


    【解决方案1】:

    您可以使用 xpath = "./*" 获取行的直接子代

    【讨论】:

      【解决方案2】:

      根据您希望 XPath 的具体程度,有一些可能的方法,例如如果您只是想计算任何名称的子元素,那么您可以使用*

      row.find_elements(:xpath => "*").length
      

      如果您想专门计算某些名称的子元素,即 lidiv

      row.find_elements(:xpath => "*[self::li|self::div]").length
      

      【讨论】:

      • 谢谢@har07,也有可能获得像第一个和第二个li 元素的子元素名称我想要路径li/a 的子元素为button 和第三个li路径元素li/asvg 可能吗?
      • 没有。 XPath 只能返回存在于源 XML 中的内容,除此之外只有非常有限的可能性,尤其是使用 selenium 支持的 XPath 1.0。
      • 感谢更新,我正在尝试按类查找svg 元素为row.find_element(:xpath =&gt; "./li/a/svg[contains(@class,'deleteIcon')]"),但它抛出了一个异常,我想不出它有什么问题,你能帮忙吗?
      • 你能帮我解决这个问题吗stackoverflow.com/questions/43385291/…
      猜你喜欢
      • 1970-01-01
      • 2015-09-28
      • 1970-01-01
      • 2020-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-14
      • 1970-01-01
      相关资源
      最近更新 更多