【问题标题】:Set Timeout for Page loading in robotframework在机器人框架中设置页面加载超时
【发布时间】:2019-05-15 17:18:40
【问题描述】:

当我的测试运行多个页面时,我想检查页面加载的响应时间。 如果页面在 2 秒内未加载,则测试应该失败。 我正在使用带有 Selenium2Library 的 Robot Framework,每次我使用命令 Wait until Page Contains text 2s 时,浏览器都会等待页面完全加载,然后运行此命令,但该命令不起作用。 是否可以在 Robot Framework 中设置页面加载超时?

【问题讨论】:

标签: robotframework


【解决方案1】:

默认的 selenium 行为是在返回控件之前等待页面加载(除了一些由 js 完成的 ajax 调用)。因此,在原版 Go To 导航调用中,加载发生后将继续执行 - 因此 Wait Until ... 几乎立即通过。
Selenium 支持通过 desired_capabilities 中的设置覆盖此行为,但这可能有点牵涉(例如,Firefox 的设置称为“pageLoadStrategy”,其值为 none/eager/normal)。

这里有一些更容易的东西 - 只需使用计时器,获取导航前后的时间戳,差异将是整个页面加载。

${before}=    Get Current Date    result_format=epoch
Go To     https://your-url
${after}=       Get Current Date    result_format=epoch

Should be True    ${after} - ${before} < 2     msg=The total page load time was more than 2 seconds!

关键字 Get Current Datethe DateTime standard library 中,当使用参数“result_format=epoch”调用时,它返回一个浮点数(自 1970 年以来的秒数) - 小数部分是毫秒。
通过减去这两个值,您可以得到整个页面的加载时间。

【讨论】:

  • 除了这个答案,我想评论一下,像这样评估性能可能不是最好的长期方法。所以,即使你可以,你真的需要想知道你是否应该这样做。这仅提供抽查,但随着时间的推移没有显示退化(另一个迹象正在发生)。这也意味着混合功能测试和性能测试,应该分开保存。
  • 嗯,一般来说,对于性能测试来说,这是正确的;在这个特定的问题中,听起来 OP 正在尝试测试业务需求——“页面呈现时间不应超过 2 秒”。对于这种情况,只检查与以前数据进行比较的测试就足够了。
  • 确实,答案满足了所要求的需求。但是,超越最初的需求,并添加一些关于更高级实现的外观以及是否需要不同方法的上下文。对我来说,这是一件很高兴知道的事情,即使你是初学者。
猜你喜欢
  • 2018-04-25
  • 2011-04-11
  • 2019-05-15
  • 2023-01-08
  • 2021-07-13
  • 2020-08-31
  • 2015-11-23
  • 2016-05-11
  • 1970-01-01
相关资源
最近更新 更多