【问题标题】:Test Template with Robot Framework带有机器人框架的测试模板
【发布时间】:2018-05-01 07:01:38
【问题描述】:

我正在尝试使用 Robot Framework 测试模板功能,但遇到了一点困难。

我目前的测试包括打开 5 个不同的网站(声明为变量)

这是我的代码:

*** Settings ***
Library  Selenium2Library
Library  OperatingSystem
Library  String
Library  Collections
Test Template  Open URL

*** Variables ***
${URL1}     http://montrealgazette.com/
${URL2}     https://www.usatoday.com/
${URL3}     http://www.foxnews.com/
${URL4}     http://www.cnn.com/
${URL5}     https://ca.reuters.com/

*** Test Cases ***
Validate Availability
${URL1}
${URL2}
${URL3}
${URL4}
${URL5}

*** Keywords ***
Open URL
[Arguments]  ${URL}
Open Browser    $[URL]     Chrome

当我运行这段代码时,会打开 5 个单独的空白浏览器窗口。如果有更好的方法,请告诉我。 提前感谢您的帮助!

【问题讨论】:

  • 您正在使用哪个硒库..? Java 还是 selenium..?
  • 您好,很抱歉遗漏了。我正在使用带有 Python 和 Selenium2Library 的机器人框架。
  • 想要五个单独的窗口,还是一个窗口?如果您只是测试可用性,您是否需要任何窗口?您可以对页面发出 REST 请求,看看它是否可用。
  • 我已经更新了我的答案,请检查一下是否对您有帮助...
  • @BryanOakley :如果可能的话,我宁愿根本没有窗户。如何实现 REST 请求?

标签: selenium robotframework


【解决方案1】:

您似乎没有缩进测试用例的内容,这可能是问题所在(在您修复了Raj sattam's answer 中提到的语法错误之后)。这几乎是我能看到的唯一错误。您也希望在关键字声明中做同样的事情。

*** Test Cases ***
Validate Availability
    ${URL1}
    ${URL2}
    ${URL3}
    ${URL4}
    ${URL5}

如果仍然无法解决问题,您可以尝试将测试用例本身声明为模板化测试用例,而不是使用 ** Settings ** 部分,如下所示:

*** Settings ***
Library  Selenium2Library
Library  OperatingSystem
Library  String
Library  Collections

*** Variables ***
${URL1}     http://montrealgazette.com/
${URL2}     https://www.usatoday.com/
${URL3}     http://www.foxnews.com/
${URL4}     http://www.cnn.com/
${URL5}     https://ca.reuters.com/

*** Test Cases ***
Validate Availability
    [Template]    Open URL
    ${URL1}
    ${URL2}
    ${URL3}
    ${URL4}
    ${URL5}

*** Keywords ***
Open URL
    [Arguments]  ${URL}
    Open Browser    ${URL}     Chrome

【讨论】:

  • 谢谢@Verv,我遇到的第二个问题是由于缺少缩进。感谢您的帮助。
【解决方案2】:

你可以使用Execute Javascript这样的关键字:

*** Settings ***
Library  Selenium2Library
Library  OperatingSystem
Library  String
Library  Collections
Test Template  Open URL

*** Variables ***
${URL1}     http://montrealgazette.com/
${URL2}     https://www.usatoday.com/
${URL3}     http://www.foxnews.com/
${URL4}     http://www.cnn.com/
${URL5}     https://ca.reuters.com/

*** Test Cases ***
Validate Availability
    Open URLs In New Tab   ${URL1}    ${URL2}    ${URL3}    ${URL4}    ${URL5}

*** Keywords ***
Open URLs In New Tab   
    [Arguments]  @{URL}
    :FOR ${eachUrl}  IN  @{URL}
    \   Execute Javascript    window.open(${eachUrl},"_blank");

【讨论】:

  • 您为什么要这样做而不是使用内置关键字之一?
  • @Bryan Oakley...您说的是哪个内置关键字...?据我所知,没有相同的关键字...
  • 无论哪种方式都不能回答 OP 的问题。
  • @MayurAgarwal :感谢您的帮助,但我对使用 Javascript 并不感兴趣。
【解决方案3】:

您需要更改的唯一部分是 * 关键字 * 部分

*** Keywords ***
Open URL
    [Arguments]  ${URL}
    Open Browser    ${URL}     Chrome

大括号代替方括号

【讨论】:

  • 感谢您的提醒,感觉我现在已经到了某个地方,但是对于每种情况,我都会收到以下错误:验证可用性 |失败 |测试用例不包含关键字。${URL1} |失败 |测试用例不包含关键字。${URL2}
  • 感谢@Raj sattam。你的回答让我离回答这个问题更近了一步。我也遇到了后续答案中解决的缩进问题。
  • 很高兴我的回答有帮助。我认为缩进很好,因为您提到它打开了 5 个空白 Crome 窗口。无论如何,我建议你有两个不同的文件。一个用于您的资源(即您的变量和关键字)和一个单独的测试用例文件。只需在测试用例文件中导入您的资源。按照这个演示网址。bitbucket.org/robotframework/webdemo
猜你喜欢
  • 1970-01-01
  • 2022-12-18
  • 2016-05-15
  • 2020-09-23
  • 2020-01-22
  • 2018-09-16
  • 2018-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多