Selenium 多个切换窗口后为什么会登录失效?

li · 2022年04月11日 · 最后由 li 回复于 2022年04月14日 · 4700 次阅读


selenium 中同一个 driver,第一个页面,输入网址,填写登录信息登录,可登录成功。此时,同一个浏览器新打开一个标签页,输入另一个网址,输入账号密码登录,这时已经进入首页,但是从接口看是登录失效的状态(图二)。

尝试一:不登录网址一,切换窗口后登录网址二
结果:网址二可登录成功

尝试二:正常登录网址一,网址二绕过登录页,直接用 token 登录(图一)
结果:登录失败,显示登录失效,请重新登录

脚本想实现两个不同的网页分别操作,但是发现在第一个页面登录成功后,第二个页面无法正常登录。
这个问题和第一个页面登录的 cookie 有关系吗,怎么样才能实现两个页面均正常登录?

尝试三:刚才手动操作了一下,发现两个网址用的 cookie\JSESSIONID 是一样的,程序跑的 cookie 结果也没问题(图三),所以登录失败的原因是什么啊😤

共收到 11 条回复 时间 点赞

再启一个 driver 试下

li #2 · 2022年04月12日 Author

重新启一个 driver 可以正常登录,但是这样操作的话需要在项目里重新定义一个 driver1,整个项目里引入两个 driver 有点乱,还是想搞清楚在同一个浏览器启动登录失败的问题

尝试用无痕浏览器/其他浏览器登录第二个用户?

看看 cookie 的域名是不是同一个,后面的覆盖 cookie 覆盖了前面的?

页面二换个第三方网址试下登录是否正常?

li #6 · 2022年04月13日 Author

两个网站用的同一个域名,统一浏览器登录时的 cookie 是一样的,但是自动化执行的时候登录第二个网页没有调用 login 接口(可能是这个原因导致的获取不到登录权限),手动操作就可以。和同一个域名有关系吗

第二个网站你怎么写到 localstorge 里面,是存这里面的吗?

li #8 · 2022年04月13日 Author

不是。。。权限 token 是存在了 sessionstorge 里面,登录的 saasToken 没找到存在哪里,图上登录的方法应该是没有登录成功。不过登录失败的原因应该是第二个网页里的 sessionstorge 存的时第一个网页的信息,不知道怎么修改了。。

li #9 · 2022年04月13日 Author

可以,第二个页面域名不一样的话登录没问题

我试了下登录之后直接新建标签页访问一个子页面 url 是可以的,既然手动可以的话我认为你不需要去做什么特殊的操作,登录后直接新建标签页,注意等登录动作彻底完成再新建

ps:如果你手动操作时,第二个标签页也是要登录的,那我就理解错了,当我没说

li #11 · 2022年04月14日 Author
墨妖 回复

是的,已经确定是第二个页面 sessionstorge 没有更新的问题了。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册