如何使用加特林提取带&符号的href?

Posted

技术标签:

【中文标题】如何使用加特林提取带&符号的href?【英文标题】:How to extract href with ampersand using Gatling? 【发布时间】:2016-01-28 21:11:25 【问题描述】:

当我需要在 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")
)

那么用于第二个请求的 URL 是go?to=foobar%E2%88%88dex=null

【问题讨论】:

你用的是哪个版本的? gatling-charts-highcharts-bundle-2.1.7 【参考方案1】:

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

它已经在源中修复,应该很快就会发布。 然后,在 Gatling 中强制依赖版本。

【讨论】:

编辑答案,因为这是已修复的另一个问题的副本。【参考方案2】:

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

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

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

当然,您不应该在 HTML(或 XML)上使用正则表达式。在这种情况下,绝不意味着“直到它与 CSS 选择器一起使用”。

【讨论】:

以上是关于如何使用加特林提取带&符号的href?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过改变随机值获得加特林模拟

带增量编号的加特林进料器(非随机)

加特林 HTML 响应

特林叫啥

Latex如何让字母头顶带两点?

加特林机枪为啥叫minigun