SoapUI(专业版) - 自动检索访问令牌

时间:2015-03-30 14:10:58

标签: javascript groovy soapui

首先,我必须写一些“sosage around”来清楚地解释我需要弄清楚什么。所以,请耐心等待。

在我的SoapUI项目中的TestCase中,我有一个包含“send get request”步骤和“properties”步骤的测试步骤。在测试步骤“发送获取请求”中,我正在请求访问令牌

如果我想自动检索此访问令牌,可以通过Javascript(我已经拥有)来完成。

var userIdElement = document.querySelector("#idp *[name=userid]");
userIdElement.value = "123123"

var password = document.querySelector("#idp *[name=userpwd_page]");
password.value = "aa123456";

var button = document.querySelector("button[type=submit]")
button.click();

那么,我的问题是什么? 我需要弄清楚:

  • 如何将变量从我的测试场景中的属性加载到JS变量:

    userIdElement.value = "123123"
    

    使用像

    这样的语法很常见
    def var_sql = context.expand("${#Properties#ID_SQL}")
    

    但这只能在Groovy脚本中使用。 那么,可以在Javascript中以某种方式完成吗?

  • 第二件事是如果我想要检索AT,我必须点击“获取令牌”而不是点击“获取访问令牌”。但是当我需要自动执行此操作时,这是一个非常严重的问题。那么,您是否知道如何自动执行此操作?

非常感谢你们!

1 个答案:

答案 0 :(得分:0)

您可以在SOAPUI中使用javascript从脚本中使用context.expand

例如,如果您在TestCase中添加一个名为SOME_PROPERTY的属性,那么您可以使用javascript对其进行检索,如下所示:

var a = context.expand('${#TestCase#SOME_PROPERTY}');
log.info(a);

正如您所看到的那样,也可以在groovy中使用log对象,我添加了log.info(a);,因此您可以在script log标签中看到结果。见下图:

enter image description here

因此,您的脚本不是context.expand的问题是您在某些行的末尾错过了;(正如您在评论中所说的那样{{1}引发的错误} js引擎是:rinho)。添加缺失的Error: missing ; before statement将解决您的问题。所以使用类似的东西:

;

而不是:

var userIdElement = document.querySelector("#idp *[name=userid]");
userIdElement.value = context.expand('${#TestCase#userIdProperty}');

var password = document.querySelector("#idp *[name=userpwd_page]");
password.value = context.expand('${#TestCase#passwordProperty}');

var button = document.querySelector("button[type=submit]");
button.click();

希望这有帮助,