从 html 元素获取文本

问题描述 投票:0回答:1

我想在机器人框架日志文件中记录“摘要文本”表单内段落中的消息。然而这个

paragraph
没有 id,也没有类。在这种情况下,我怎样才能获取该文本以将其记录到 Robot Framework 上?

    <div id="results">
                    
       <h2>Results</h2>
     
       <form id="form_results" method="POST" >
    
        <p>Summary text</p>
        ....
       </form>
    ...
    </div>

我尝试像这样“

Log  id: form_results:p
”,但它不起作用:

*** Keywords ***
Log message
    Log  id:form_results:p
python selenium-webdriver robotframework
1个回答
0
投票

您的方法有两个问题 - 元素的定位器以及获取其文本的方式;让我们从后者开始,因为它更容易。

RF 是一个基于“操作”的框架 - 您指示它执行某些操作,并传递参数来控制它。其中一个这样的操作/关键字是

Log
- 它会记录一条消息。
您调用了它,并传递了“id:form_results:p” - 现在,为什么它会执行与记录该字符串不同的操作?对你来说,它是一个定位器,你可能期望“它应该记录元素的文本,因为这显然是一个定位器” - 但是,它怎么知道这是你的意图,仅仅因为它看起来像一个定位器?在不同的情况下,可能不需要这样做;因此关键字执行其设计目的的唯一操作 - 记录传递的任何字符串或变量。

要执行您想要的操作,获取文本然后记录它,您必须执行这两个操作 - 首先获取文本并分配给 var:

${text}=    Get Text    ${my locator}

,然后记录 var 的值:

Log    ${text}

说到另一个问题——定位器。您指定的内容 - id:form_results:p - 不是有效的;它被描述为“id 属性等于 form_result:p 的元素”,而您可能的意思是“id 属性等于 form_result 的元素,然后是其子 p”。 这里有 3 种不同的定位器策略来实现这一目标:

css:form#form_result p    # a css locator
xpath://form[@id="form_result"]   # an xpath one
id:form_result >> name:p   # mixing two locator strategies, first an id one, then name

使用任何选项代替上面的

${my locator}
,应该没问题。

© www.soinside.com 2019 - 2024. All rights reserved.