【问题标题】:In Watir, how to get the full text, from a portion of text?在 Watir 中,如何从部分文本中获取全文?
【发布时间】:2012-04-27 19:30:37
【问题描述】:

我有一部分 HTML 看起来类似于:

<table><tbody><tr>
<td><div> Text Goes Here </div></td>
<td> ... rest of table

没有 ID、没有标题、没有任何类型的描述符来轻松识别包含文本的 div。

当页面发生错误时,错误会被插入到“Text Goes Here”所在的位置(除非发生错误,否则不会出现任何文本)。每个错误都包含“有效”一词。 示例:“表单必须包含有效名称”或“选择的日期范围无效”

我目前的 Watir 代码如下所示:

if browser.frame(:index => 0).text.includes? "valid"
  msg = # need to get full text of message
  return msg
else
  return true
end

有没有办法在这种情况下获得全文? 基本上:返回包含文本“有效”的元素的全文?

使用:Watir 2.0.4,Webdriver 0.4.1

【问题讨论】:

    标签: watir watir-webdriver


    【解决方案1】:

    鉴于您提供的结构,由于 div 经常被使用,我倾向于使用正则表达式来查找表格单元格,正如 Dave 在他的回答中显示的那样。除非您有很多嵌套表格,否则更有可能只返回您想要的文本。

    此外,如果“有效”可能出现在其他地方,那么您可能需要提供稍大的文本样本以供查找

    。 browser(:cell => /valid/).text

    【讨论】:

      【解决方案2】:

      试试这个

      return browser.div(:text => /valid/).text
      

      return browser.table.div(:text => /valid/).text
      

      如果没有找到valid,它应该返回nil。

      【讨论】:

      • 你必须小心这样做。文本定位器检查元素的文本,其中包括其子元素的文本。例如,如果您的表格周围有一个 div 标签,第一个解决方案将为您提供表格中的所有文本,而不仅仅是表格中的特定 div。
      • 您说得对,先生。这就是被测 html 的小 sn-ps 的问题。人们无法为这么小的视图创建一个安全的解决方案。
      猜你喜欢
      • 1970-01-01
      • 2014-09-17
      • 1970-01-01
      • 2023-01-20
      • 2015-10-02
      • 2011-09-07
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      相关资源
      最近更新 更多