Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
.www.
wechaty
提交
626dac22
W
wechaty
项目概览
.www.
/
wechaty
与 Fork 源项目一致
Fork自
wechaty / wechaty
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
W
wechaty
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
626dac22
编写于
6月 09, 2016
作者:
Huan (李卓桓)
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
new bug: webdriver.get with promise has strange behaviour
上级
2dcc1963
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
41 addition
and
15 deletion
+41
-15
example/ding-dong-bot.js
example/ding-dong-bot.js
+1
-1
src/puppet-web-browser.js
src/puppet-web-browser.js
+35
-11
test/webdriver-spec.js
test/webdriver-spec.js
+5
-3
未找到文件。
example/ding-dong-bot.js
浏览文件 @
626dac22
...
...
@@ -28,7 +28,7 @@ Please wait... I'm trying to login in...
`
console
.
log
(
welcome
)
const
bot
=
new
Wechaty
({
head
:
true
})
const
bot
=
new
Wechaty
({
head
:
'
chrome
'
})
bot
.
on
(
'
login
'
,
user
=>
log
.
info
(
'
Bot
'
,
'
logined
'
))
...
...
src/puppet-web-browser.js
浏览文件 @
626dac22
...
...
@@ -16,8 +16,13 @@ const retryPromise = require('retry-promise').default // https://github.com/ola
class
Browser
{
constructor
(
options
)
{
log
.
verbose
(
'
Browser
'
,
'
constructor()
'
)
options
=
options
||
{}
this
.
head
=
options
.
head
||
false
// default to headless
if
(
typeof
options
.
head
===
'
undefined
'
)
{
this
.
head
=
false
// default
}
else
{
this
.
head
=
options
.
head
}
}
toString
()
{
return
`Class Browser({head:
${
this
.
head
}
)`
}
...
...
@@ -25,23 +30,42 @@ class Browser {
init
()
{
return
this
.
initDriver
()
.
then
(()
=>
this
)
.
catch
(
e
=>
{
// XXX: must has a `.catch` here, or promise will hang! 2016/6/7
log
.
error
(
'
Browser
'
,
'
init() rejectec: %s
'
,
e
)
throw
e
})
// XXX: if no `.catch` here, promise will hang!
// XXX: https://github.com/SeleniumHQ/selenium/issues/2233
.
catch
(
e
=>
throw
e
)
// console.log(p)
// return p.catch()
// .catch(e => { // XXX: must has a `.catch` here, or promise will hang! 2016/6/7
// log.error('Browser', 'init() rejectec: %s', e)
// throw e
// })
}
initDriver
()
{
log
.
verbose
(
'
Browser
'
,
'
init
()
'
)
log
.
verbose
(
'
Browser
'
,
'
init
Driver(head: %s)
'
,
this
.
head
)
if
(
this
.
head
)
{
this
.
driver
=
new
WebDriver
.
Builder
()
.
setAlertBehavior
(
'
ignore
'
)
.
forBrowser
(
'
chrome
'
)
.
build
()
if
(
/firefox/i
.
test
(
this
.
head
))
{
this
.
driver
=
new
WebDriver
.
Builder
()
.
setAlertBehavior
(
'
ignore
'
)
.
forBrowser
(
'
firefox
'
)
.
build
()
}
else
{
// default to chrome
this
.
driver
=
new
WebDriver
.
Builder
()
.
setAlertBehavior
(
'
ignore
'
)
.
forBrowser
(
'
chrome
'
)
.
build
()
}
}
else
{
this
.
driver
=
this
.
getPhantomJsDriver
()
}
return
Promise
.
resolve
(
this
.
driver
)
// console.log(this.driver)
return
new
Promise
((
resolve
,
reject
)
=>
{
// XXX: if no `setTimeout()` here, promise will hang!
// XXX: https://github.com/SeleniumHQ/selenium/issues/2233
setTimeout
(()
=>
{
resolve
(
this
.
driver
)
},
0
)
// resolve(this.driver)
})
}
open
()
{
...
...
test/webdriver-spec.js
浏览文件 @
626dac22
...
...
@@ -5,7 +5,7 @@ const co = require('co')
const
test
=
require
(
'
tap
'
).
test
const
log
=
require
(
'
npmlog
'
)
// log.level = 'verbose'
//
log.level = 'silly'
log
.
level
=
'
silly
'
const
WebDriver
=
require
(
'
selenium-webdriver
'
)
const
Browser
=
WebDriver
.
Browser
...
...
@@ -14,6 +14,7 @@ const By = WebDriver.By
const
PuppetWebBrowser
=
require
(
'
../src/puppet-web-browser
'
)
const
PuppetWebBridge
=
require
(
'
../src/puppet-web-bridge
'
)
const
PORT
=
58788
const
HEAD
=
'
chrome
'
// undefined
function
driverProcessNum
()
{
return
new
Promise
((
resolve
,
reject
)
=>
{
...
...
@@ -28,12 +29,13 @@ function driverProcessNum() {
test
(
'
WebDriver process create & quit test
'
,
function
(
t
)
{
co
(
function
*
()
{
const
b
=
new
PuppetWebBrowser
({
port
:
PORT
})
const
b
=
new
PuppetWebBrowser
({
port
:
PORT
,
head
:
HEAD
})
t
.
ok
(
b
,
'
Browser instnace
'
)
yield
b
.
init
()
t
.
pass
(
'
inited
'
)
yield
b
.
open
()
t
.
pass
(
'
inited &
opened
'
)
t
.
pass
(
'
opened
'
)
let
n
=
yield
driverProcessNum
()
t
.
ok
(
n
>
0
,
'
driver process exist
'
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录