【问题标题】:How to extract href with ampersand using Gatling?如何使用加特林提取带&符号的href?
【发布时间】: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

标签: html gatling


【解决方案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 选择器一起使用”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2011-03-18
    • 2018-08-31
    • 1970-01-01
    • 2021-04-03
    • 2018-01-12
    • 1970-01-01
    相关资源
    最近更新 更多