selenium – Phantomjs会话隔离仍然无效吗?

当我使用chrome浏览器运行我的selenium测试时,我的测试用例运行正常.使用phantomjs浏览器时,看起来浏览器会话在每个测试用例后都不会重置.在我的测试用例中,我以用户身份登录,然后导航到某些页面,然后注销.当测试用例发生故障时会出现问题.浏览器会话未重置,因此当下一个测试用例开始时,失败的测试无法注销.这会导致单个故障后的所有测试用例都失败.

在互联网上寻找这个问题的解决方案时,我们已经知道了2013年的情况.我似乎无法找到有关此问题的最新信息.有没有最新的解决方法

手动尝试在每个测试用例之前或之后删除cookie似乎不起作用. webDriver.manage()deleteallCookies();

我正在使用phantomjs ver 2.1.1.

解决方法

首先是 PhantomJS is dead,最好切换到 Headless ChromeHeadless Firefox.

其次PhantomJS是Webkit的一个端口,它是not thread safe.这意味着如果您尝试并行运行多个测试,您将看到线程问题,要解决此问题,您需要启动PhantomJS的多个实例并让每个GhostDriver实例连接到PhantomJS的另一个实例.

你看到的特殊问题是PhantomJS没有正确地清除它自己,唯一的解决方案是杀死你在测试完成后运行的初始PhantomJS实例然后启动一个干净的新实例,不幸的是,这不是由GhostDriver支持.

最后一个问题是GhostDriver也已经死了,当PhantomJS去世时,没有任何意义继续发展.

TLDR;请改用Chrome / Firefox无头模式.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...