当我使用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无头模式。