javascript - Webdriver.IO 处理单点登录 cookie
问题描述
我正在创建一些 node.js webdriverio 测试。当我连接到我的任何站点时,会检查是否存在 ssosession cookie(以及其他),以确认用户可以访问该页面。如果它不存在,浏览器会立即重定向到我们的登录页面。我需要从成功登录中捕获生成的 cookie,并使用它们来加载我想要测试的页面。
在 curl 中,我这样做:
curl -H"Content-type: application/json" --user-agent "MyTestAgent" --cookie-jar cookiefile -o - --data-ascii "{\"user_id\": \"username\", \"user_secret\": \"password\"}" -X POST https://loginpage.net
然后:
curl -H"Content-type: application/json" --user-agent "MyTestAgent" --cookie cookiefile - --cookie-jar cookiefile -o - https://testpage.net
目前在我的代码中,当我点击我打算测试的页面的 url 时,它会立即重定向到登录页面,我输入登录凭据并成功登录。然后我将 cookie 转储到控制台,它们没有更新。ssosession 的东西不存在(还没有?)。如果我单独 console.log ssosession,它是空的。如果我 console.log 所有的 cookie,它们就像我只是从登录页面抓取 cookie 而没有登录一样。没有任何 SSO 内容存在。
describe('testpage.net page', function () {
it('should login', function () {
browser.url('https://testpage.net');
//this immediately redirects to https://loginpage.net
browser.setValue('#userid','noone@nowhere.net');
browser.setValue('#passwd','S3cr3tP4ssw0rd');
browser.submitForm('#login');
console.log(browser.getCookie('ssosession'));
//returns null
console.log(browser.getCookie());
//returns cookies that existed prior to login success
});
});
我需要一种方法来获取登录后成功 cookie,将它们存储在本地,相当于 curls cookiejar,并在后续测试中使用它们。我一直在用头撞墙,试图弄清楚这是怎么做到的。这是一个具有非常陈旧的身份验证方法的内部站点,但我需要为它的 gui 编写测试自动化。一旦克服了这个特殊的障碍,应该很容易做到这一点。建议非常感谢!
解决方案
推荐阅读
- c# - 如何在 .NET Core 中管理项目的程序集?
- jquery - 在 jQuery 中显示/隐藏已经通过显示或隐藏“过滤”的表行
- python - 用熊猫重命名列
- python - Tkinter pages updated from separate files
- kotlin - @DSLMarker not limiting the scope of DSL
- multithreading - 在线程内部时括号不释放资源
- sql-server - SQL Server parallel execution
- python - 附加到嵌套的 NumPy 数组
- tableau-api - 如何将前导空格添加到 Tableau 整数
- xcode - Swift 5.0 为存储在 EnvironmentObject 中的数组对象赋值的最佳方法