当我使用chrome浏览器运行我的selenium测试时,我的测试用例运行正常.使用phantomjs浏览器时,看起来浏览器会话在每个测试用例后都不会重置.在我的测试用例中,我以用户身份登录,然后导航到某些页面,然后注销.当测试用例发生故障时会出现问题.浏览器会话未重置,因此当下一个测试用例开始时,失败的测试无法注销.这会导致单个故障后的所有测试用例都失败.
在互联网上寻找这个问题的解决方案时,我们已经知道了2013年的情况.我似乎无法找到有关此问题的最新信息.有没有最新的解决方法?
手动尝试在每个测试用例之前或之后删除cookie似乎不起作用. webDriver.manage()deleteallCookies();
我正在使用phantomjs ver 2.1.1.
解决方法
首先是
PhantomJS is dead,最好切换到
Headless Chrome或
Headless Firefox.
其次PhantomJS是Webkit的一个端口,它是not thread safe.这意味着如果您尝试并行运行多个测试,您将看到线程问题,要解决此问题,您需要启动PhantomJS的多个实例并让每个GhostDriver实例连接到PhantomJS的另一个实例.
你看到的特殊问题是PhantomJS没有正确地清除它自己,唯一的解决方案是杀死你在测试完成后运行的初始PhantomJS实例然后启动一个干净的新实例,不幸的是,这不是由GhostDriver支持.
最后一个问题是GhostDriver也已经死了,当PhantomJS去世时,没有任何意义继续发展.
TLDR;请改用Chrome / Firefox无头模式.