即使scala中存在,检查也会失败

时间:2014-04-22 06:44:37

标签: java scala jsf gatling

我在scala中录制了一个会话。即使我可以在View sourceInspect Element中看到该标记,一个请求也会失败。我尝试了所有其他隐藏的字段,但似乎找不到这个。这是脚本:

val scn = scenario("Scenario Name")
.feed(csv("user_credentials.csv"))
.exec(http("request_1")
.get("/userLogin")
.headers(headers_1) 
.check(regex("""<input id="javax.faces.ViewState" """).saveAs("ViewState_id"))

).pause(1)
.exec(http("request_999")
.post("/userLogin")
.headers(headers_1)
.param("""loginForm""", """loginForm""")
.param("""errorMsg""", """""")
.param("""c_username""", "${username}")
.param("""javax.faces.ViewState""", "${ViewState_id}")
.param("""goButton""", """goButton""")

)

我得到的错误是

c.e.e.g.h.a.GatlingAsyncHandlerActor - Request 'request_1'
failed : Check 'exists' failed, found None

我在源代码中找到了标记<input id="javax.faces.ViewState" ..../>,但此脚本无法找到它。我尝试用其他字段和一些隐藏字段进行测试,除此之外找到所有其他组件。如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我怀疑问题是你的ViewState对象的id实际上不是javax.faces.ViewState - name将是javax.faces.ViewState,但在JSF实现中我是&# 39;我们看到,id就像j_id1:javax.faces.ViewState:0

最简单的解决方案是按照https://github.com/excilys/gatling/wiki/Handling-JSF中的说明处理Gatling中的JSF。或者,您可以按名称搜索ViewState元素,而不是id - 类似于:

.check(css("""input[name="javax.faces.ViewState"]""", "value").saveAs("ViewState_id"))

应该做的伎俩。