首页 > 解决方案 > 使用 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 之后停止并且不会进入下一个。

非常感谢任何和所有帮助。

标签: pythonjsonrobotframework

解决方案


用于@将列表扩展为 FOR 的单个参数:

FOR    ${urls}    IN    @{url_values}
       Assert Oplists Are Visible On Pages  ${urls}
END

这在机器人框架用户指南的标题为简单 for 循环的部分中提到


推荐阅读