我正在尝试比较 Robot Framework 中的两个相同列表。我正在使用的代码是:
List Test
Lists Should Be Equal @{List_Of_States_USA} @{List_Of_States_USA-Temp}
Run Code Online (Sandbox Code Playgroud)
并且列表与以下值相同:
@{List_Of_States_USA} Alabama Alaska American Samoa Arizona Arkansas California Colorado
... Connecticut Delaware District of Columbia Florida Georgia Guam Hawaii
... Idaho Illinois Indiana Iowa Kansas Kentucky Louisiana
... Maine Maryland Massachusetts Michigan Minnesota Mississippi Missouri
... Montana National Nebraska Nevada New Hampshire New Jersey New Mexico
... New York North Carolina North Dakota Northern Mariana Islands Ohio Oklahoma Oregon
... Pennsylvania Puerto Rico Rhode Island South Carolina …Run Code Online (Sandbox Code Playgroud) 我是机器人框架的新手。我在不同的文件夹中编写了许多套件,并且想要执行它们,只需像我们在 Java TestNG 中使用 xml 文件那样执行单个文件即可。有什么办法吗,请帮帮我。我的框架结构是这样的:
Dir1
TestSuite1
TestSuite2
Dir2
TestSuite1
TestSuite1
Run Code Online (Sandbox Code Playgroud)
我想执行所有测试套件中的所有测试用例。谢谢
我有一个表,其中一些单元格有多个文本,每个文本都有自己的 xpath。例如,下面代码中的两个文本元素位于同一表格单元格中,但有两个 xpath :对于第一个“B17AA038”,xpath 为 // [ @id="profile_research"]/tbody/tr[1]/ td[10]/text() ,下一个实例有另一个 xpath (// [@id="profile_research"]/tbody/tr[1]/td[10]/div[2]/text())。在表中,我有一些单元格,其中一个单元格中包含许多单独的文本元素。我试图从单元格中选择一个特定的文本元素并将其用作变量,但到目前为止失败了。
举个例子,我尝试过这个:
Run keyword if '${Row_No}'=='1' get text xpath=//*[@id="profile_research"]/tbody/tr[${Table_Row}]/td[10]/text()
Run Code Online (Sandbox Code Playgroud)
并收到此错误消息:
InvalidSelectorException: Message: invalid selector: The result of the xpath expression "//*[@id="profile_research"]/tbody/tr[2]/td[10]/text()" is: [object Text]. It should be an element.
Run Code Online (Sandbox Code Playgroud)
相关html如下:
<td style="word-wrap: break-word; min-width: 120px; max-width: 120px; white-space:nowrap;">
<!-- sample level pandh_id-->
<!-- test level pandh_id-->
**B17AA03**8 <span class="badge badge-info" style="background-color: white; color:black; border:1px solid #808080; margin-bottom:2px; font-size:0.5em;">2</span>
<!-- hidden print div for add test to this sample-->
<div …Run Code Online (Sandbox Code Playgroud) 显然,可以在某些 Python 脚本中导入 Python Robot Framework 库。然而,有没有一种神奇的方法可以在Python脚本中导入Robot Framework资源文件呢?资源文件是用 RF 语法编写的,因此需要一些专用的 Python 模块来导入它(实际上将 RF 语法翻译为 Python)。也许类似的东西已经存在,甚至可以使用一些 RF 内置模块,就好像我理解正确一样,在脚本执行期间 RF 语法被转换为 Python 调用。
2018年6月18日更新:
正如 A. Kootstra 所建议的,可以使用以下命令在 Python 脚本中导入 Robot 关键字:
from robot.libraries.BuiltIn import BuiltIn
BuiltIn().import_resource('${EXECDIR}/resource.robot')
Run Code Online (Sandbox Code Playgroud)
但是,如何访问 Python 脚本中导入的 Robot 资源中的任何关键字?builtIn().import_resource 不会将任何处理程序返回到导入的库。
我会打电话
BuiltIn.call_method
Run Code Online (Sandbox Code Playgroud)
但它需要对象实例作为第一个参数。导入的资源文件也不存在于返回的字典中
globals()
Run Code Online (Sandbox Code Playgroud) 通过 CMD(Windows)执行机器人脚本时出现错误
“机器人”不被识别为内部或外部命令、可操作程序或批处理文件”
我的团队在 C:\Python27 文件夹中安装了 Python,并使用以下命令安装了 ROBOT 框架和所有必需的库
"python -m pip install -U setuptools --user, python -m pip install -U robotframework --user"
Run Code Online (Sandbox Code Playgroud)
我们无权在 C 盘安装任何内容,所有库均已成功安装。但是当我尝试通过 CMD 执行脚本时出现错误。
笔记:
所有机器人库都安装在“C:\Users\bab\AppData\Roaming\Python\Python27\site-packages”中
我确实使用上面的路径设置了环境变量
脚本通过 ECLIPSE 运行并使用以下命令
命令
C:\Python27\python.exe -m robot.run --listener C:\Users\bab\AppData \Local\Temp\RobotTempDir2497069958731862237\TestRunnerAgent.py:61106 --argumentfile C:\Users\bab\AppData\Local\Temp\RobotTempDir2497069958731862237\args_c4fe2372.arg C:\Users\bab\Robot_Sframe\E2Automation
Run Code Online (Sandbox Code Playgroud)
请帮助我,因为这一步对于将我的脚本与 Jenkins 集成非常关键
测试结果表明 for 循环不包含关键字
我尝试使语法尽可能符合用户指南。它不允许我在 FOR 之前添加“:”,并且它说在新版本中没有必要。
*** Settings ***
Test Teardown Close Browser
Library SeleniumLibrary
Library Collections
Library RequestsLibrary
*** Test Cases ***
links
Open Browser http://neuromorpho.org/neuron_info.jsp?neuron_name=DD13-10-c5-1 safari
Maximize Browser Window
${AllLinksCount}= Get Element Count //a
Log ${AllLinksCount}
@{LinkItems} Create List
FOR ${INDEX} IN RANGE 1 ${AllLinksCount}
\ \ Log ${INDEX}
\ \ ${lintext}= Get Text xpath= (//a) [${INDEX}]
\ \ Log ${lintext}
\ \ ${linklength} Get Length ${lintext}
\ \ Run Keyword If ${linklength} >1 Append To List ${LinkItems} …Run Code Online (Sandbox Code Playgroud) *当我运行我的机器人测试时,它说找到多个名称为“设置变量值”的关键字。给出要使用的关键字的全名:step_definitions.Set Variable Value for variable_handler.Set Variable Value for 它对variable_handler.py中提到的所有关键字执行此操作
我缺少什么吗?我们需要给出包含该关键字的 python 文件的名称吗?* 网上找的不多。已在设置中添加了库。
Variable_handler.py
```@keyword(name='Set Variable Value for')
def Set_Variable_Value_for(tag, value):
my_token_file = 'Resources/written_variables.yml'
data = None
with open(my_token_file, 'r') as testData:
data = yaml.load(testData)
data[tag] = value
with open(my_token_file, 'w') as writeTestData:
print(ruamel.yaml.dump(data, writeTestData,
Dumper=ruamel.yaml.RoundTripDumper))```
step_definitions.py
'''@keyword(name='Set Start Time for Test')
def Test_Start_Time():
tz = timezone('UTC')
Time_Now = datetime.now(tz)
naive_date = Time_Now.replace(tzinfo=None)
Set_Variable_Value_for('START_TIME', naive_date)```
Test.robot
'''Create a New Member
[Documentation] Add a New Member
[Tags] CreateMember MemberAndProjectCreationFlow SanityTest
All …Run Code Online (Sandbox Code Playgroud) 我正在尝试在机器人框架中创建一个新的环境变量。我用了
Set Environment Variable ${myVar} myVal
Run Code Online (Sandbox Code Playgroud)
我收到错误如下:
Variable '${myVar}' not found
Run Code Online (Sandbox Code Playgroud)
那么“设置环境变量”是用来替换现有的变量值吗?如果是这样,如何创建一个未定义的新变量?
我正在从事一个变得相当大和复杂的项目。
在我们的机器人测试文件中,我们现在有几个套件设置/拆卸和测试设置/拆卸,用于处理第三方服务的生成模拟服务器、重置配置、覆盖随机值的生成,以便我们的测试输出保持可预测等。
由于每个测试文件都需要进行所有设置/拆卸,因此设置部分中的样板数量变得非常愚蠢。
减少此测试设置样板的“规范”方法是什么?我不能简单地将所有设置/拆卸语句收集到几个关键字中并使用它们,因为测试套件并不都有完全相同的要求。
例如,Robot Framework 中是否有任何方法可以让测试库(特别是 Python)添加安装/拆卸操作?这样我就可以在设置部分设置一些元数据,并让测试库根据需要添加设置/拆卸操作。
例如,我可以添加一个元数据标头,例如Metadata Uses services Twitter, Facebook,然后测试库将处理套件级别的设置/拆卸以生成和终止模拟服务器,以及测试级别的设置/拆卸以清理其状态。
如果文件存在于文件系统中,如何在机器人框架中运行关键字?例如:
Run Keyword If ${filename} exists Delete File
Run Code Online (Sandbox Code Playgroud) robotframework ×10
python ×5
python-2.7 ×2
collections ×1
for-loop ×1
import ×1
jquery ×1
keyword ×1
python-3.x ×1
selenium ×1
translate ×1
xpath ×1