【问题标题】:How to Parse HTML in Robot Framework如何在 Robot Framework 中解析 HTML
【发布时间】:2014-03-29 03:26:39
【问题描述】:

以下是我的文字,它存储在${Tooltipdata}

    <hr><b><strong>Task Details</strong></b><hr><b>Date Created: </b> 02/21/2014 07:52pm<br> 
<b>Date Modified: </b> 02/24/2014 05:47pm<br><b>Assigned to: </b> Administrator<br>
<b>Created By: </b> Administrator<br><b>Status: </b> Pending Input<br><b>Description:
 </b> test<br>

我想要这样的结果:

Task Details  Date Created:  02/21/2014 07:52pm    Date Modified:  02/24/2014 05:47pm    Assigned to:  Administrator   
 Created By:  Administrator   
 Status:  Pending Input   
 Description:  test.

简单我想删除 HTML 标签。

【问题讨论】:

  • 如何在 Robot Framework 中移除 HTML 标签。

标签: python html parsing robotframework


【解决方案1】:

您可以使用Evaluate 关键字来运行python re.sub 命令。像这样的东西应该可以工作:

*** Keywords ***
| Remove HTML tags
| | [Documentation] | Strip HTML tags from the given string
| | [Arguments]     | ${string}
| | ${result}=      | Evaluate | re.sub(r'<.*?>', '', '''${string}''') | re
| | [Return]        | ${result}

*** Test cases ***
| Example
| | ${Tooltipdata}= | Some keyword which returns the tooltip data
| | ${string}= | Remove HTML tags | ${Tooltipdata}

如果你不熟悉正则表达式,上面的表达式意思是“匹配 之间的最短字符串”,re.sub 命令会用空字符串替换每一个出现的字符串。

如果您的 html 标签包含其中包含 &gt; 的属性,这将失败,如果您的数据同时包含 ,它也会替换非 html 标签,但这是您尝试解析 HTML 时所承担的风险用正则表达式。在您的具体示例中,您应该是安全的。

更好的选择是在python中编写一个关键字,并使用Beautiful Soup等真正的HTML解析库来解析数据。代码示例见this question

【讨论】:

    【解决方案2】:

    您可以尝试使用正则表达式:

    import re
    
    data = "<hr><b><strong>Task Details</strong></b><hr><b>Date Created: </b> 02/21/2014 7:52pm<br><b>Date Modified: </b> 02/24/2014 05:47pm<br><b>Assigned to: </b> Administrator<br><b>Created By: </b> Administrator<br><b>Status: </b> Pending Input<br><b>Description: </b> test<br>"
    # get text without tag
    result = re.split(r'<[A-z\/]*>', data)
    
    # print with removed tag
    print ''.join(result)
    

    【讨论】:

    • 什么是re,如何在robot framework中导入re??
    • re 用于 python 中的正则表达式,请参阅:docs.python.org/2/library/re.html,关于如何在机器人框架中导入 re,将 import re 放入 python 代码中
    • 你的意思是我需要为此创建库?
    • 为防止误解,如果您提供其余代码会很有帮助。据我了解,这就是您想要的,如“我想删除 HTML 标记。”,代码会做到这一点。
    • 我正在获取工具提示并存储在 ${ToolTipdata} 中,它工作正常,但显示为 html 标记。这是代码: ${Tooltipdata} 执行 JavaScript var el = document.evaluate("//table/tbody/tr[1]/td[2]/span", document, null, 9, null).singleNodeValue;返回 $(el).data('tooltip').options.title;记录 ${Tooltipdata}
    【解决方案3】:

    通过使用字符串库,我们可以替换字符串。这是我用于替换字符串的代码。

    ${str} =    Replace String    ${Tooltipdata}    <hr>    a
    

    【讨论】:

      猜你喜欢
      • 2019-02-02
      • 2017-01-20
      • 1970-01-01
      • 2021-06-14
      • 2017-06-18
      • 2022-01-07
      • 2017-12-31
      • 2014-03-16
      • 2021-07-05
      相关资源
      最近更新 更多