使用Webdriver Sampler获取浏览器sessionStorage中auth_token报错如何解决?
解决WebDriver Sampler获取sessionStorage的TypeError问题
嘿,这个问题我之前帮人解决过不少——你遇到的TypeError: WDS.browser.sessionStorage is not a function,本质是因为WebDriver Sampler不能直接通过WDS.browser去调用浏览器的sessionStorage对象,它属于页面的JS上下文,得换个正确的方式获取。
下面是具体的解决步骤:
用executeScript进入页面上下文获取token
WebDriver需要通过执行页面内的JS代码来访问sessionStorage,你可以用WDS.browser.executeScript()方法来实现:// 执行JS代码获取sessionStorage中的auth_token var authToken = WDS.browser.executeScript('return sessionStorage.getItem("auth_token");');这段代码会让浏览器在当前页面的上下文里执行JS,返回
sessionStorage中存储的auth_token值。将token存入JMeter变量供后续请求使用
拿到token后,把它存到JMeter的变量里,这样后续的HTTP请求就能直接引用了:// 把auth_token存入JMeter变量 WDS.vars.put("auth_token", authToken);之后你在其他请求里就可以用
${auth_token}来调用这个token了。额外注意:确保页面已加载完成
要保证执行这段代码时,你已经处于登录成功后的页面(也就是sessionStorage里已经有auth_token的状态)。如果页面加载较慢,建议加个等待逻辑,确保元素加载完成再获取:// 等待登录后的页面元素出现,超时时间10秒 WDS.browser.wait(WDS.until.elementLocated(WDS.By.id("your-logged-in-element-id")), 10000); // 再获取token var authToken = WDS.browser.executeScript('return sessionStorage.getItem("auth_token");'); WDS.vars.put("auth_token", authToken);
核心逻辑就是:不要直接尝试通过WDS.browser访问sessionStorage,而是借助executeScript去调用页面内的JS来获取存储的值。
内容的提问来源于stack exchange,提问作者Cod
相关产品推荐
相关产品推荐

