我在scala中录制了一个会话。即使我可以在View source
和Inspect 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" ..../>
,但此脚本无法找到它。我尝试用其他字段和一些隐藏字段进行测试,除此之外找到所有其他组件。如何解决这个问题?
答案 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"))
应该做的伎俩。