python - 使用 RobotFrameWork 循环遍历 URL 的 JSON 列表以断言每个页面上都存在一个元素
问题描述
我有一个 JSON 文件中的 URL 列表,其布局如下:
{
"urls":
[
"https://www.fakesite.org",
"https://www.fakesite.org/home",
"https://www.fakesite.org/whatever"
]
}
我想在机器人框架中循环它们并断言一个元素存在。我可以让它打开浏览器,转到第一个链接并检查元素。然后测试结束并且不会继续循环到下一个 url。
Robotframework 关键字是这样写的
I assert the element exists on the page
${url_list}= load json from file ../Json/myjson.json
${url_values}= get value from json ${url_list} $.urls[:]
FOR ${urls} IN ${url_values[0]}
Assert Oplists Are Visible On Pages ${urls}
END
我将其设置为 url_values[0]。如果我删除了 [0],它会尝试抛出整个列表并告诉我“WebDriverException:消息:未知错误:'url' 必须是一个字符串。” 所以我知道它试图传递整个列表。
这继续提到的关键字:
Assert Oplists Are Visible On State Pages
[Arguments] ${urls}
Go To ${urls}
page should contain element ${primary_element}
我已经在上一步中打开了浏览器,因此您看不到典型的
open browser url chrome
这一切都很好,做我需要做的。我唯一的问题是在第一个 URL 之后停止并且不会进入下一个。
非常感谢任何和所有帮助。
解决方案
用于@
将列表扩展为 FOR 的单个参数:
FOR ${urls} IN @{url_values}
Assert Oplists Are Visible On Pages ${urls}
END
这在机器人框架用户指南的标题为简单 for 循环的部分中提到
推荐阅读
- sharepoint - 在 SharePoint 列表中将小时和分钟字段合并为一个
- java - Spring:CrossOrigin 不与 ResponseEntity 一起使用
- pandas - 为最后的选择创建虚拟变量 - Pandas
- php - 如何从 foreach 循环中删除最后一个逗号?
- mysql - 如何修复 Pool 的 _connectionQueue 中过多的问题?
- android - 生成签名发布 apk 时出现重复错误
- javascript - 将 AVVideoComposition 初始化程序转换为 Nativescript
- java - 与 Java 反射“调用”方法的行为不一致
- java - GAE 凭据在 App Engine 上不可用
- php - Symfony 4 - 无法提交我的表单模式(路径错误)