From 97e5d9a5c5bd8530bc32ddf1843b6509f79db849 Mon Sep 17 00:00:00 2001 From: Zhuohuan LI Date: Sun, 7 Aug 2016 10:16:06 +0800 Subject: [PATCH] upgrade to compatible with selenium-webdriver v3 --- package.json | 5 +++-- src/puppet-web/browser.js | 43 ++++++++++++++++++++++----------------- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 2442a2cb..07e4525d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wechaty", - "version": "0.3.3", + "version": "0.3.5", "description": "Wechat for Bot (Personal Account)", "main": "index.js", "scripts": { @@ -8,7 +8,8 @@ "pretest": "npm run lint", "start": "node bin/io-bot", "demo": "node example/ding-dong-bot.js", - "test": "cross-env TAP_TIMEOUT=600 tap --reporter=tap test/{*,**/*}.spec.js" + "prepublish": "npm shrinkwrap", + "test": "cross-env TAP_TIMEOUT=600 tap --reporter=tap test/**/*.spec.js" }, "repository": { "type": "git", diff --git a/src/puppet-web/browser.js b/src/puppet-web/browser.js index 17a3ea5f..09ed2764 100644 --- a/src/puppet-web/browser.js +++ b/src/puppet-web/browser.js @@ -254,7 +254,7 @@ class Browser extends EventEmitter { addCookies(cookie) { if (this.dead()) { return Promise.reject(new Error('addCookies() - browser dead'))} - if (cookie.map) { + if (typeof cookie.map === 'function') { return cookie.map(c => { return this.addCookies(c) }) @@ -265,15 +265,16 @@ class Browser extends EventEmitter { * NOTICE: the lastest branch of selenium-webdriver for js has changed the interface of addCookie: * https://github.com/SeleniumHQ/selenium/commit/02f407976ca1d516826990f11aca7de3c16ba576 */ - if (cookie.expiry) { cookie.expiry = cookie.expiry * 1000 /* XXX: be aware of new version of webdriver */} + // if (cookie.expiry) { cookie.expiry = cookie.expiry * 1000 /* XXX: be aware of new version of webdriver */} - log.silly('PuppetWebBrowser', 'addCookies("%s", "%s", "%s", "%s", "%s", "%s")' - , cookie.name, cookie.value, cookie.path, cookie.domain, cookie.secure, cookie.expiry - ) + log.silly('PuppetWebBrowser', 'addCookies("%s")', JSON.stringify(cookie)) return this.driver.manage() - .addCookie(cookie.name, cookie.value, cookie.path - , cookie.domain, cookie.secure, cookie.expiry) + // this is old webdriver format + // .addCookie(cookie.name, cookie.value, cookie.path + // , cookie.domain, cookie.secure, cookie.expiry) + // thisi is new webdriver format + .addCookie(cookie) .catch(e => { log.warn('PuppetWebBrowser', 'addCookies() exception: %s', e.message) throw e @@ -400,20 +401,24 @@ class Browser extends EventEmitter { const filename = this.sessionFile + function cookieFilter(cookies) { + const skipNames = [ + 'ChromeDriver' + , 'MM_WX_SOUND_STATE' + , 'MM_WX_NOTIFY_STATE' + ] + const skipNamesRegex = new RegExp(skipNames.join('|'), 'i') + return cookies.filter(c => { + if (skipNamesRegex.test(c.name)) { return false } + // else if (!/wx\.qq\.com/i.test(c.domain)) { return false } + else { return true } + }) + } + return new Promise((resolve, reject) => { this.driver.manage().getCookies() - .then(allCookies => { - const skipNames = [ - 'ChromeDriver' - , 'MM_WX_SOUND_STATE' - , 'MM_WX_NOTIFY_STATE' - ] - const skipNamesRegex = new RegExp(skipNames.join('|'), 'i') - const cookies = allCookies.filter(c => { - if (skipNamesRegex.test(c.name)) { return false } - // else if (!/wx\.qq\.com/i.test(c.domain)) { return false } - else { return true } - }) + .then(cookieFilter) + .then(cookies => { // log.silly('PuppetWeb', 'saving %d cookies for session: %s', cookies.length // , util.inspect(cookies.map(c => { return {name: c.name /*, value: c.value, expiresType: typeof c.expires, expires: c.expires*/} }))) log.silly('PuppetWebBrowser', 'saving %d cookies for session: %s', cookies.length, cookies.map(c => c.name).join(',')) -- GitLab