【问题标题】:Click Element in Dynamic Web Table using Robot Framework使用机器人框架单击动态 Web 表中的元素
【发布时间】:2020-07-18 16:57:54
【问题描述】:

我想单击使用 Robot Framework 的动态 Web 表的最后一列中的链接。场景是我必须验证该 Web 表中的文本,然后单击其 orderId。我得到的文本来自外部来源。

编写的射频代码是:

*** Test Cases ***
    ${p}    Get File    C:\\Users\\gaurav\\Desktop\\company.txt
    log to console    ${p}
    Open Browser    ${url}    chrome
    Maximize Browser Window
    ${s}    wait until page contains    ${p}    
    ${elemnts}    Get WebElements    //div[@id="content"]//table//tbody/tr
    @{links}    Create List
    :FOR  ${row}  IN  @{elemnts}  
    \    Append To List    ${links}    ${row.text}
    \    Log    ${links}
    \    Run Keyword IF    '${s}' == 'True'    Exit For Loop
    \    Click Element    //div[@id="content"]//table//tbody/tr/td[5]

我能够遍历每一行,但它没有点击 orderId。

company.txt 文件名为 Island Trading

【问题讨论】:

  • 那它是怎么失败的呢?您收到任何错误消息吗?日志中有什么?你怎么知道它没有点击orderId?如果点击成功,您预计会发生什么?
  • 在日志中显示它点击了每个元素并通过了结果,但没有打开带有公司 Island Trading 的 orderId 的页面。
  • 当我查看问题中的表格时,它看起来不像“订单 ID”列中的链接。这让我有点困惑,但也许它只是看起来的样子。当您手动尝试相同的流程时,它是否有效?
  • 是的,它可以手动工作
  • 您的 click 元素的选择器将始终点击同一个元素 5 次。在这种情况下,它很可能会点击“Alfreds Futterkist”。您很可能应该将索引添加到行元素..

标签: python robotframework


【解决方案1】:

你可以试试这个

关键词

 Get Table Row Count
    [Arguments]     ${rowLocator}
    run keyword and return  get element count  ${rowLocator}

Get Row By Cell Text
    [Arguments]  ${rowLocator}  ${cellText}     ${column}   
    [Return]     ${rowNumber}
    ${rowCount}     get table row count     ${rowLocator}
    :FOR    ${rowIndex}  IN RANGE    1   ${rowCount}+1
    \       ${curText}     get text    ${rowLocator}[${rowIndex}]/td[${column}]
    \       exit for loop if  '${curText}'=='${cellText}'
    ${rowNumber}    set variable  ${rowIndex}

一旦你得到行索引,就使用它作为点击元素传递给链接的 xpath 的标签。

【讨论】:

    猜你喜欢
    • 2019-12-03
    • 2018-06-19
    • 1970-01-01
    • 2018-09-20
    • 2020-05-23
    • 2017-07-29
    • 2023-04-02
    • 1970-01-01
    • 2018-12-29
    相关资源
    最近更新 更多