有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java PhantomJS和Selenium Webdriver如何清除会话

我正在使用SeleniumWebDriver(Java)和PhantomJS测试一个复杂的JS驱动的网站。我的问题是,PhantomJS浏览器在两个测试之间保持会话,这会导致测试设置中出现错误

如果我用Firefox运行测试,一切正常,因为Firefox对每个测试用例都使用干净的会话

我解决这个问题的第一次尝试是通过JS注入清除本地存储。Cookie被Selenium exposed API driver.manage().deleteAllCookies();删除

但是不允许在不访问页面的情况下执行JavaScript。因此,在“about:blank”处启动浏览器会导致错误

那么,如何配置phantomjs webdriver来清除会话呢

我使用phantomjs和webdriver是因为selenium网格服务不够稳定。所以我启动我的phantomjs实例如下:

phantomjs --webdriver=1234

共 (3) 个答案

  1. # 1 楼答案

    PhantomJS的2.0版解决了这个问题。如果您有Linux环境,则需要克隆源代码并进行编译,如下所示:

    git clone git://github.com/ariya/phantomjs.git
    cd phantomjs
    git checkout 2.0
    ./build.sh
    

    More info here

  2. # 2 楼答案

    PhantomJS在测试之间保持会话是GhostDriver中的一个known problem事实,GhostDriver是PhantomJS中的Selenium Webdriver实现

    我想这个问题会在PhantomJS2发行版中得到解决。这个错误已经在GhostDriver 1.1.1中修复,但是没有包含这个GhostDriver版本的PhantomJS版本

  3. # 3 楼答案

    我知道如果使用GhostDriver,Selenium Grid有一个“cleanSession”选项。另外,我非常确定常规WebDriver类在本地WebDriver实例上有一个选项:

    driver.manage().deleteAllCookies();