【问题标题】:Check value of an xpath in if statement在 if 语句中检查 xpath 的值
【发布时间】:2022-01-01 03:05:07
【问题描述】:

您好,我正在尝试使用 IF 语句检查我的表是否已排序,我正在尝试使用从 xpath 获得的值,如下所示。

Check if sorted by alphabet
sleep   3s
${stuurman}=    Stuurman
${sorted}=    Get Text    xpath:/html/body/div[1]/div/div[2]/div/div/div/div[1]/div/div[2]/table/tbody/tr[12]/td[2]
IF    ${sorted} == ${stuurman}
    Log To Console  "Sorted"
ELSE
    Log To Console  "Not sorted"
END

但我收到以下错误:未找到名称为“Stuurman”的关键字。 我在这里做错了什么?

【问题讨论】:

    标签: selenium robotframework


    【解决方案1】:

    除了 Matthew King 对变量创建的回答之外,您的代码还有另一个问题:

    IF 中的表达式直接传递给 python 解释器,框架用它们的值替换任何变量。所以

    ${sorted} == ${stuurman}
    

    被评估为

    Stuurman == the text from the UI
    

    现在python中的this实际上是“变量Stuurman应该等于变量the text from the UI”,但是没有这样的变量,它们还没有为py定义;因此将引发异常。

    有两个选项可以使它正确;因为两者都是字符串,你可以用引号将它们括起来,当 RF 用值替换它们时,这将是一个普通的字符串比较:

    "${sorted}" == "${stuurman}"     
    # will be evaluated as:
    # "Stuurman" == "the text from the UI"
    

    另一种选择是使用高级变量语法(我认为这是 RF 用户指南中的名称)并且不传递值,而是传递变量本身。这是通过省略大括号来完成的,仅在 var 前面加上美元符号。

    因此不会发生替换,Python 将获取实际变量并进行比较:

    $sorted == $stuurman
    

    【讨论】:

      【解决方案2】:

      当您在关键字中设置变量时,您需要使用“设置变量”之类的内容,然后是值。 (右侧应有关键字)

      例如

      ${stuurman}=  Set Variable   Stuurman
      

      在 *** 变量 *** 部分中设置变量时,您可以省略关键字,例如

      *** Variables ***
      ${stuurman}=   Stuurman
      

      【讨论】:

        猜你喜欢
        • 2017-04-21
        • 2016-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-07
        • 2017-10-25
        • 2019-06-30
        • 2015-12-06
        相关资源
        最近更新 更多