如何使用Gatling用&符号提取href?

时间:2015-10-28 21:46:32

标签: html gatling

当我需要在Gatling压力测试中关注页面上的链接时,如果URL包含&符,则会出现问题。大概是因为加特林将其解释为一个实体。怎么能解决这个问题?

示例:

假设您首先收到包含

的网页
<a href="go?to=foobar&index=null" title="Choice 1">

现在,如果我尝试使用此链接

exec(
  http("page with link")
  .get("/page1")
  .check(css("""a[title='Choice 1']""", "href").saveAs("url"))
)
.exec(
  http("follow link")
  .get("${url}")
)

然后用于第二个请求的网址是go?to=foobar%E2%88%88dex=null

2 个答案:

答案 0 :(得分:2)

这是Jodd(我们使用的html解析器+ css选择器实现)issue

它已在源代码中修复,应尽快发布。 然后,在Gatling中强制依赖版本。

答案 1 :(得分:0)

我不确定它是否正确&#34;在HTML属性中使用未转义的&符号。但有些网站有它们和浏览器处理它。有些网站甚至在同一属性中同时拥有&&amp;。但是从版本2.1.7开始,Gatling的CSS选择器无法处理普通(未转义)的&符号。

如果其他人有同样的问题,这是一个肮脏的黑客:

regex("""href="([^"]+)".* title="Choice 1">""")
.transform(raw => raw.replace("&amp;", "&"))

当然,你永远不应该在HTML(或XML)上使用正则表达式。在这种情况下,永远不会意味着&#34;直到它适用于CSS选择器&#34;。