Gem selenium-webdriver 的 sessionId 能共享么?

huhongda · 2014年01月07日 · 最后由 huhongda 回复于 2014年01月07日 · 6822 次阅读

最近在用 selenium-webdriver 做自动化测试,遇见一个问题,selenium-webdriver 每次启动 driver 时都会重新生成一个新的 session, 即每个浏览器窗口都是一个新的会话。

现在我想要每次使用 selenium-webdriver 时都使用同一个 session(有 cookie 保存等)

查看了一下 selenium-webdriver 的源码:

最终发现每个会话的 sessionId 来自于 selenium 返回的结果:

源码地址:https://github.com/vertis/selenium-webdriver/blob/master/lib/selenium/webdriver/remote/http/default.rb#L56

返回结果来自于:response.body

{"sessionId"=>"daec4133-c622-4da8-a662-fc05d487a21f", "status"=>0, "value"=>{"platform"=>"LINUX", "javascriptEnabled"=>true, "acceptSslCerts"=>true, "browserName"=>"firefox", "rotatable"=>false, "locationContextEnabled"=>true, "webdriver.remote.sessionid"=>"daec4133-c622-4da8-a662-fc05d487a21f", "version"=>"17.0.10", "databaseEnabled"=>true, "cssSelectorsEnabled"=>true, "handlesAlerts"=>true, "browserConnectionEnabled"=>true, "webStorageEnabled"=>true, "nativeEvents"=>false, "applicationCacheEnabled"=>true, "takesScreenshot"=>true}, "state"=>nil, "class"=>"org.openqa.selenium.remote.Response", "hCode"=>732910363} 可以看见 sessionId 来自于浏览器返回的结果。

请各位大牛帮忙看看使用 selenium-webdriver 能否公用 session!

driver = Selenium::WebDriver.for :xxxx
session_cookie = load_cookie_from_cookie_jar_file()
driver.manage.add_cookie session_cookie
需要 登录 后方可回复, 如果你还没有账号请 注册新账号