【问题标题】:How to compare two strings equal or not in Robot Framework如何在机器人框架中比较两个字符串是否相等
【发布时间】:2013-07-24 04:53:40
【问题描述】:
如何在 Robot Framework 中比较两个字符串是否相等。例如:
${xyz}= Get Text xpath=/html/body/div/div[2]/div[3]/div/div/div/div/h3
${abc}= Get Text xpath=/html/body/div/div[2]/div[4]/div/div/div/div/h3
这些 xpath 值得到不同的字符串。那么如何比较字符串是否相等呢?
将值存储在 Robot Framework 中的变量中是否正确?
【问题讨论】:
标签:
python
webdriver
selenium-webdriver
robotframework
【解决方案1】:
是的,这是存储变量的正确方法。尽管您也可以不使用等号:
${xyz} Get Text xpath=/html/body/div/div[2]/div[3]/div/div/div/div/h3
${abc} Get Text xpath=/html/body/div/div[2]/div[4]/div/div/div/div/h3
现在您已经为变量分配了两个不同的字符串,您可以这样做:
Should Be Equal As Strings ${xyz} ${abc}
您可以查看Should Be Equal As Strings here 的文档。
【解决方案2】:
Should Be Equal As Strings 的替代方法是使用 Should Be True - 它将提供的参数评估为 python 表达式(例如“可以用值替换的东西”),如果出现 False 则失败:
Should Be True """${variable 1}""" == """${variable 1}"""
当您无法控制值时(例如,当从外部源 - 网页获取时)使用 triple quotes 是一个好习惯 - 此构造允许值在其中包含引号或换行符,而不会导致语法错误。
虽然这种方法对于简单的检查可能有点麻烦,但它非常强大——你可以使用 python 提供的任何东西。例如,如果检查不区分大小写:
Should Be True """${variable 1}""".lower() == """${variable 1}""".lower()
或者,如果任何起始/尾随空格无关紧要:
Should Be True """${variable 1}""".strip() == """${variable 1}""".strip()
或者,一个字符串是另一个字符串的一部分:
Should Be True """${variable 1}""" in """${variable 1}"""