如何使用加特林提取带&符号的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;
。但从 2.1.7 版开始,Gatling 的 CSS 选择器无法处理普通的(未转义的)& 符号。
如果其他人有同样的问题,这里是一个肮脏的黑客:
regex("""href="([^"]+)".* title="Choice 1">""")
.transform(raw => raw.replace("&", "&"))
当然,您不应该在 HTML(或 XML)上使用正则表达式。在这种情况下,绝不意味着“直到它与 CSS 选择器一起使用”。
【讨论】:
以上是关于如何使用加特林提取带&符号的href?的主要内容,如果未能解决你的问题,请参考以下文章