如何在Insomnia中提取HTML响应里name为code的input值?
问题:Insomnia提取HTML中特定input的value值失败
我需要用Insomnia从以下HTML中提取name属性为code的input元素的value值:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Return</title> <script> window.onload=function() { var form = document.getElementById("redirect_form"); form.submit(); } </script> <SCRIPT type="text/javascript"> /*<![CDATA[*/ document.cookie = "IV_JCT=%2Foauth; path=/;secure"; /*]]>*/ </SCRIPT> </head> <body> <p>Return....</p> <form id="redirect_form" name="redirect_form" action="https://example.com/login/callbackmfe" method="POST"> <input type="hidden" name="code" value="yDCKqoCgXDAEdeY2d01ln43gaHerP2" /> <input type="hidden" name="iss" value="https://example.com" /> <input type="hidden" name="state" value="testing" /> </form> </body> </html>
尝试了以下两个XPath表达式均失败:
/html/body/input[@name='code']/@value(//input[@name='code'])[1]/@value
使用的Insomnia版本:
Version: Insomnia 2023.2.2
V8: 10.8.168.20-electron.0
原因及解决方案
第一个XPath的问题
你的第一个表达式路径错误:目标input元素并非直接位于body节点下,而是嵌套在form节点内部。正确的路径应该包含form层级:
/html/body/form/input[@name='code']/@value
第二个XPath的潜在问题
第二个表达式(//input[@name='code'])[1]/@value语法上是正确的,但可能因以下原因失效:
- Insomnia解析特性:部分版本的Insomnia对绝对索引语法支持有差异,可尝试简化为:
该表达式会直接匹配所有//input[@name='code']/@valuename为code的input元素并返回其value属性,在仅存在一个目标元素的场景下效果一致。 - 命名空间影响:HTML根节点带有
xmlns命名空间,极端场景下解析器会严格遵循规则,可尝试忽略命名空间的表达式://*[local-name()='input' and @name='code']/@value
验证方式
在Insomnia的Response > Body > XPath面板输入正确表达式,实时预览提取结果,确认是否成功获取目标值yDCKqoCgXDAEdeY2d01ln43gaHerP2。
内容的提问来源于stack exchange,提问作者Eduardo Goncalves
相关产品推荐
相关产品推荐

