如何直接将从一个关键字返回的值作为输入参数用于其他关键字(不将返回值赋给变量)
目前,我在Excel工作表中维护所有Web元素或变量名称以及相应的xpath。我通过传递web元素/变量名作为参数来使用关键字read_xpath
来获取XPath。
我将xpath存储在单独的变量中,然后将其用于其他或下一行关键字。由于我需要为每个XPath访问使用一个变量,我试图找出,是否有任何方法可以直接使用一个关键字输出作为其他关键字的输入而不将其分配给变量。
在Excel工作表中存储XPath的主要目的是避免在单个Element XPath更改时更改多个测试用例,只需在Excel Sheet上进行单个更改即可。
例如:
read_xpath
从Excel工作表中读取值,Excel工作表有两列,一列variable name
,第二列为xpath
。函数read_xpath(element)
将variable name
作为输入并返回xpath
。
xlread.py文件看起来像xlread.py code Excel表格看起来像Excel sheet
sample.robot 文件如下所示
${login_user_textctrl}= read_xpath username_textctrl
clear element text ${login_user_textctrl}
Input text ${login_user_textctrl} admin
现在让我们检查一下我在机器人文件中使用read_xpath
关键字的方式
我使用参数read_xpath
调用了关键字username_texctrl
,它返回用户名文本Control的xpath,它存储在变量${login_user_textctrl}
中。现在输入文字${login_user_textctrl}
admin工作正常。
以下代码
clear element text read_xpath username_textctrl
我知道,清除元素文本需要1个参数但提供了两个参数,有没有什么方法可以直接使用Keyword(read_xpath)返回的值作为其他关键字的输入,而不将其分配给任何变量?
提前致谢。
答案 0 :(得分:0)
您可以使用Evaluate
直接调用python函数。例如:
${my element to clear}= Evaluate read_xpath("username_textctrl") xlread
请参阅文档here
(注意:示例未经测试,您应检查xlread是否在PYTHONPATH中,或在测试运行时找到)
答案 1 :(得分:0)
当定位器被大量重用时,通常会通过对象存储库将定位器与机器人代码分离。另一种实现范例是使用页面对象模型。可以在Robotframework-PageObjectLibrary。
中找到此类实现的示例如果您仍然喜欢对象存储库方法,那么使用Selenium2Library
关键字Add Location Strategy可能会让您感兴趣。下面是一个工作示例,它使用YAML文件作为OR来从Google获取搜索输入框和搜索按钮。
<强> ObjectRepo.yaml 强>
OR:
searchbox: '//input[@id="lst-ib"]'
searchbutton: '//button[@id="_fZl"]'
机器人脚本
*** Settings ***
Library Selenium2Library
Variables ObjectRepo.yaml
*** Test Cases ***
Yaml Object Repository
[Setup] Add Location Strategy yro Yaml Locator Strategy
Open Browser http://www.google.com Chrome
Input Text yro=searchbox Robot Framework
Click Element yro=searchbutton
Sleep 3s
[Teardown] Close All Browsers
*** Keywords ***
Yaml Locator Strategy
[Arguments] ${browser} ${criteria} ${tag} ${constraints}
${xpath}= Set Variable ${OR.${criteria}}
${retVal}= Get Webelement xpath=${xpath}
[Return] ${retVal}
正如您所看到的,通过自定义定位器关键字的抽象允许更清晰的代码,并且不需要您获取变量以供以后重用。