【问题标题】:How to extract a value which does not have any attribute in ruby watir如何提取在ruby watir中没有任何属性的值
【发布时间】:2012-09-24 12:13:58
【问题描述】:

我有一个响应页面,其中包含一些文本。没有属性可以基于它从响应中获取所需的文本。有人可以给我写一个代码来做同样的事情。我已在此处附上来源。

Mux isconnected
requesting...
response got
field id="0" value="0110"field id="3" value="000000"<BR>field id="4" value="000000010000"<BR>field id="6" value="000000010000"<BR>
Response - Success
<-- 0110 000326 33444489

在上面的源代码中我想提取 [ id="0" value="0110" ] 然后在接下来的测试步骤中使用 value=0100 。

我有代码来分割文本并只使用如下所示的值

text = 'response got field id="0" value="525XXXXXXXXX66"' 
matcher = text.match(/value="(.+)"/) 
puts matcher.captures.first 

但首先我需要提取 require 标记或文本,并在上述函数中将其指定为“文本”。

【问题讨论】:

    标签: html ruby regex text watir


    【解决方案1】:

    要提取第一个field id="0" value="0110",您可以使用此正则表达式

    /(field\s+id=".+?"\s+value=".+?")/.match(yourString)[1]
    

    并使用第一组。正则表达式中的组允许您在表达式中获取文本的特定部分,例如,使用正则表达式 /ma(.+?)l/manual,您将在第一组中获得 'nua',即 /ma(.+?)l/.match('manual')[1] 将等于 '呸'。

    如果您想获取特定值(例如 29)的 id,并且 id 始终是 之前 值,请执行此操作

    str=29
    myResult = /field\s+id="#{str}"\s+value="(.+?)"/.match(yourString)[1]
    

    value\1 组中(即[1]),因此myResult 包含您需要的数字。当然你可以在str中放任何东西。

    另请看here,这是您需要的正则表达式的工作示例!

    编辑:

    我想我已经正确回答了你的问题。你进一步的澄清要求让我觉得你错过了完成这项任务的编程背景。如果您需要了解其他任何信息,请发布另一个问题或花一些精力学习您正在使用的编程语言。这个社区(据我了解)不欢迎这种行为。

    【讨论】:

    • 这不是我要提取的第一个文件。我实际上必须提取我在这里没有提到的字段 29,因为它太长了。但是我需要的是对于指定的 ID,比如 2 或 3,我需要提取并保存相应的值。我应该知道如何告诉 ruby​​ 提取此 ID 的值并将其保存到某个变量中,以便我可以在以后的步骤中使用它
    • 当我实现这个我得到一个错误。我对 ruby​​ 很陌生,不太了解它的实现。这是我得到的错误。 auth.rb:126: 语法错误,意外 $undefined,期望关键字_end newtext=field\s+id="38"\s+value="(.+?)"
    • 同样在建议的解决方案中,我无法弄清楚您提到的组是什么,以及您所指的 in\1 中的值是什么。请你指导我的想法
    • 感谢您提供详细信息。我现在正在接近解决方案。我已经以这种方式实施了您的解决方案。 newvalue=/field\s+id="38"\s+value="(.+?)"/.match(yourtext)[1] 但后来我开始收到此错误 - 未定义的局部变量或方法yourString' for main:Object, so i did this text1='yourtext' newvalue=/field\s+id="38"\s+value="(.+?)"/.match(yourtext)[1] and now I get this error 'undefined method [ ]' 对于 nil:NilClass (NoMethodError)'。你能看看和建议....
    • 我测试了解决方案并且工作正常。但这并不能完全解决问题。请参阅您所指的文本不是一些静态文本。它是作为对请求的响应而在浏览器上显示的内容。尽管此文本保持相同的模式,但每个响应的值都会发生变化。就像,显示的标签数量将始终保持不变,并且字段 ID 的唯一对应值保持不变。因此,我需要为特定响应捕获已归档 ID 的值...如果可以相应地修改上述 sloution,请告知。
    猜你喜欢
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多