使用机器人框架无法从html表中获取文本

时间:2020-08-20 06:41:01

标签: robotframework robotframework-sshlibrary robotframework-swinglibrary robotframwork-whitelibrary

这是我的代码:

<div class="table row column" xpath="1">
    <div class="table__head">
      <div class="table__row">
        <div class="table__cell sys-log__col-wrapper sys-log__col-id">
          <div class="column small-2 sort_button_wrapper">
            <button class="sort-ascending" ng-click="sortBy('Id', false)"></button>
            <button class="sort-descending" ng-click="sortBy('Id', true)"></button>
          </div>
          ID
        </div>
        <div class="table__cell sys-log__col-wrapper sys-log__col-desc">Description</div>
      </div>
    </div>


${xpath_1} = //div[@class="table__row"]/div[1]
${xpath_2} = //div[@class="table__row"]/div[2]

我需要获取ID作为xpath_1的输出,并获取Description作为xpath_2的输出。但是当我尝试获取以下代码的输出时,我得到了:

${table_data}=  Get Table Cell  ${xpath_1}

此方法遇到的以下错误

关键字“ SeleniumLibrary.Get Table Cell”预期为3到4个参数,为1。

(或)

${table_data}=  Get Text  ${xpath_1}

此方法的输出是空空间

请建议我如何使用机器人框架从上表获取ID和Description。

1 个答案:

答案 0 :(得分:0)

以示例为基础,我一直无法复制您的问题,因为在使用Get Text关键字时,实际上提供了所需的ID值。以下是在您自己的设置中复制此文件的文件和方法。

创建一个新文件:

div_value.html

<html>
<body>
<div class="table row column" xpath="1">
    <div class="table__head">
      <div class="table__row">
        <div class="table__cell sys-log__col-wrapper sys-log__col-id">
          <div class="column small-2 sort_button_wrapper">
            <button class="sort-ascending" ng-click="sortBy('Id', false)"></button>
            <button class="sort-descending" ng-click="sortBy('Id', true)"></button>
          </div>
          ID774747474
        </div>
        <div class="table__cell sys-log__col-wrapper sys-log__col-desc">Description</div>
      </div>
    </div>
 </div>
 </body>
 </html>

在此文件所在的目录中,执行以下命令:

python -m http.server 8989

我使用RED,但是其他IDE或文本编辑器也可以使用。创建一个机器人文件

div_value.robot

*** Settings ***
Library    SeleniumLibrary    

*** Variables ***
${xpath_1}     //div[@class="table__row"]/div[1]
${xpath_2}     //div[@class="table__row"]/div[2]

*** Test Cases ***
Retrieve DIV Value
    
    Open Browser 
    ...    url=http://127.0.0.1:8989/div_value.html
    ...    browser=headlesschrome

    # ${table_data}=  Get Table Cell  ${xpath_1}
    ${table_data1} =  Get Text   ${xpath_1}
    ${table_data2} =  Get Value  ${xpath_1}
    No Operation
    [Teardown]    Close All Browsers

在RED中使用调试器,我在No Operation关键字行上暂停了。

enter image description here