Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
.www.
wechaty
提交
f15fbd98
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,发现更多精彩内容 >>
提交
f15fbd98
编写于
5月 20, 2017
作者:
Huan (李卓桓)
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
clean(webdriver): clean code & test
上级
fc9758a4
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
26 addition
and
24 deletion
+26
-24
src/puppet-web/browser-driver.ts
src/puppet-web/browser-driver.ts
+20
-19
src/puppet-web/browser.ts
src/puppet-web/browser.ts
+4
-4
test/webdriver.spec.ts
test/webdriver.spec.ts
+2
-1
未找到文件。
src/puppet-web/browser-driver.ts
浏览文件 @
f15fbd98
...
...
@@ -43,7 +43,7 @@ export class BrowserDriver {
break
case
'
chrome
'
:
await
this
.
ini
tChromeDriver
()
this
.
driver
=
await
this
.
ge
tChromeDriver
()
break
default
:
// unsupported browser head
...
...
@@ -60,7 +60,8 @@ export class BrowserDriver {
public
getWebDriver
():
WebDriver
{
return
this
.
driver
}
private
async
initChromeDriver
():
Promise
<
void
>
{
private
async
getChromeDriver
():
Promise
<
WebDriver
>
{
log
.
verbose
(
'
PuppetWebBrowserDriver
'
,
'
initChromeDriver()
'
)
/**
...
...
@@ -122,19 +123,19 @@ export class BrowserDriver {
/**
* XXX when will Builder().build() throw exception???
*/
let
retry
=
0
let
ttl
=
3
let
driverError
=
new
Error
(
'
initChromeDriver() invalid driver error
'
)
let
valid
=
false
do
{
if
(
retry
>
0
)
{
log
.
warn
(
'
PuppetWebBrowserDriver
'
,
'
initChromeDriver() with retry: %d
'
,
retry
)
}
let
driver
:
WebDriver
while
(
ttl
--
)
{
log
.
verbose
(
'
PuppetWebBrowserDriver
'
,
'
initChromeDriver() ttl: %d
'
,
ttl
)
try
{
log
.
verbose
(
'
PuppetWebBrowserDriver
'
,
'
initChromeDriver() new Builder()
'
)
this
.
driver
=
new
Builder
()
driver
=
new
Builder
()
.
setAlertBehavior
(
'
ignore
'
)
.
forBrowser
(
'
chrome
'
)
.
withCapabilities
(
customChrome
)
...
...
@@ -142,10 +143,15 @@ export class BrowserDriver {
log
.
verbose
(
'
PuppetWebBrowserDriver
'
,
'
initChromeDriver() new Builder() done
'
)
valid
=
await
this
.
valid
(
this
.
driver
)
valid
=
await
this
.
valid
(
driver
)
log
.
verbose
(
'
PuppetWebBrowserDriver
'
,
'
initChromeDriver() valid() done: %s
'
,
valid
)
if
(
!
valid
)
{
if
(
valid
)
{
log
.
silly
(
'
PuppetWebBrowserDriver
'
,
'
initChromeDriver() success
'
)
return
driver
}
else
{
const
e
=
new
Error
(
'
initChromeDriver() got invalid driver
'
)
log
.
warn
(
'
PuppetWebBrowserDriver
'
,
e
.
message
)
driverError
=
e
...
...
@@ -157,20 +163,15 @@ export class BrowserDriver {
log
.
error
(
'
PuppetWebBrowserDriver
'
,
'
initChromeDriver() Wechaty require `chromedriver` to be installed.(try to run: "npm install chromedriver" to fix this issue)
'
)
throw
e
}
log
.
warn
(
'
PuppetWebBrowserDriver
'
,
'
initChromeDriver()
exception: %s, retry: %d
'
,
e
.
message
,
retry
)
log
.
warn
(
'
PuppetWebBrowserDriver
'
,
'
initChromeDriver()
ttl:%d exception: %s, ttl: %d
'
,
ttl
,
e
.
message
)
driverError
=
e
}
}
while
(
!
valid
&&
retry
++
<
3
)
if
(
!
valid
)
{
log
.
warn
(
'
PuppetWebBrowserDriver
'
,
'
initChromeDriver() not valid after retry: %d times: %s
'
,
retry
,
driverError
.
stack
)
throw
driverError
}
else
{
log
.
silly
(
'
PuppetWebBrowserDriver
'
,
'
initChromeDriver() success
'
)
}
return
log
.
warn
(
'
PuppetWebBrowserDriver
'
,
'
initChromeDriver() not valid with ttl expired: %s
'
,
driverError
.
stack
)
throw
driverError
}
private
async
getPhantomJsDriver
():
Promise
<
WebDriver
>
{
...
...
src/puppet-web/browser.ts
浏览文件 @
f15fbd98
...
...
@@ -126,8 +126,8 @@ export class Browser extends EventEmitter {
// Issue #175
// TODO: set a timer to guard driver.get timeout, then retry 3 times 201607
const
TIMEOUT
=
60
*
1000
let
TTL
=
0
while
(
TTL
++
<
3
)
{
let
TTL
=
3
while
(
TTL
--
)
{
log
.
verbose
(
'
PuppetWebBrowser
'
,
'
open() begin for ttl:%d
'
,
TTL
)
try
{
await
new
Promise
(
async
(
resolve
,
reject
)
=>
{
...
...
@@ -162,7 +162,7 @@ export class Browser extends EventEmitter {
})
// open successful!
log
.
verbose
(
'
PuppetWebBrowser
'
,
'
open() end
for
ttl:%d
'
,
TTL
)
log
.
verbose
(
'
PuppetWebBrowser
'
,
'
open() end
at
ttl:%d
'
,
TTL
)
return
}
catch
(
e
)
{
...
...
@@ -170,7 +170,7 @@ export class Browser extends EventEmitter {
}
}
throw
new
Error
(
'
open fail because ttl
(
'
+
TTL
+
'
) exce
ed
'
)
throw
new
Error
(
'
open fail because ttl
expir
ed
'
)
}
...
...
test/webdriver.spec.ts
浏览文件 @
f15fbd98
...
...
@@ -59,9 +59,10 @@ test.serial('WebDriver smoke testing', async t => {
const
m
=
(
await
browser
.
getBrowserPidList
()).
length
t
.
is
(
m
,
0
,
'
should has no browser process before get()
'
)
t
.
notThrows
(
async
()
=>
await
browser
.
driver
.
init
(),
'
should init driver success
'
)
await
browser
.
driver
.
init
(
)
const
driver
=
browser
.
driver
.
getWebDriver
()
// for help function `execute`
t
.
truthy
(
driver
,
'
should get webdriver instance
'
)
const
injectio
=
bridge
.
getInjectio
()
t
.
truthy
(
injectio
.
length
>
10
,
'
should got injectio script
'
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录