无论设置如何,总是在 10 秒时超时
Always times out at 10 seconds regardless of setting
我是 运行 一个简单的 WebDriverIO 脚本,插入任何数量的异步行为都会使其在 10 秒阈值(或之前?)处超时。我想控制超时设置,但无论我怎么尝试都无法增加它。
由于我使用的是 ChromeDriver,并非所有的 Selenium 设置都适用,设置 browser.timeouts('implicit', 30000)
(或 script
或 pageLoad
)将抛出错误:unknown error: unknown type of timeout:pageLoad
。
only other timeouts I have found 是
- mochaOpts.timeout
- 等待超时
这是我的测试:
it.only('should be able to register', ()=>{
// Mocha timeout
this.timeout(50000)
browser.url('/encounter/new');
browser.waitUntil( function() {
return browser.isExisting('[name=lastName]');
});
browser.setValue('#problem', 'something fishy');
// this is problematic: comment this out and everything works
// also works with very small timeouts
browser.executeAsync(function(done){
setTimeout(done, 1000);
});
browser.click('#appdetailsheader button');
console.log(browser.getUrl(), browser.log('browser'))
browser.waitUntil( function() {
return !browser.isExisting('[name=lastName]');
});
console.log(browser.getTitle(), browser.getUrl());
console.log(browser.log('browser'))
});
我完全能理解你的沮丧。 WebdriverIO 是高度模块化和可配置的,但这带来了更高的复杂性,这往往会导致混淆。
为此:
// Mocha timeout
this.timeout(50000);
!!! 这没有效果,因为你 configuring/setting 你的摩卡超时 arrow function which is discouraged by Mocha. Read more about it here .
解决方案(选择适用于您的设置):
- 运行 你的脚本 WebdriverIO test-runner 并设置
mochaOpts: { timeout: <desiredTimeout>}
,或者你甚至可以从你的测试中覆盖它 运行 : wdio wdio.config.js --mochaOpts.timeout=<desiredTimeout>
;
- 在你的根
describe
语句中设置你的 timeout
,或者更好的是,在 before
钩子中:before(function() { this.timeout(<desiredTimeout>); (...)});
;
- 如果您 运行 使用 Mocha 测试用例,请将超时传递到您的 CLI 命令中(如果您使用它来 运行 您的测试):
mocha yourTestFile.js --timeout <desiredTimeout>
,或在您的 mocha.opts
文件中更改它的值;
注意:我相信还有更多的方法可以做到这一点,但其中有一些对我有用。
为此:
browser.waitUntil( function() {
return browser.isExisting('[name=lastName]');
});
!!! 这将始终等待具有属性 name="lastName"
的 element
存在,默认 1000 ms
超时.该值可以通过 waitforTimeout
更改。
解决方案(选择适用于您的设置):
- 明确给你的
waitUntil...
/waitfor...
命令超时:browser.waitUntil( function() { return browser.isExisting('[name=lastName]');}, <desiredTimeout>, <errorMessage>);
;
- 运行 你的脚本 WebdriverIO test-runner 并设置
waitforTimeout: <desiredTimeout>
,或者你甚至可以从你的测试中覆盖它 运行 : wdio wdio.config.js --waitforTimeout=<desiredTimeout>
;
最后,我尝试了 运行 几个具有令人厌恶的超时值 (50000 ms
) 的测试用例,并且对于您上面提到的每个问题,它都按预期工作。
waitforTimeout 示例:
日志 (1 failing (57s)
):
[chrome #0-0] ConnectWeb Devices Content Test Suite
[chrome #0-0] 1) "before all" hook
[chrome #0-0]
[chrome #0-0]
[chrome #0-0] 1 failing (57s)
[chrome #0-0]
[chrome #0-0] 1) ConnectWeb Devices Content Test Suite "before all" hook:
[chrome #0-0] Oups! An error occured.
Timed out waiting for element ('span[connectqa-device="events"]') to exist
注意:我以前从未在 WebdriverIO 中使用过 Selenium 超时(implicit
、pageLoad
、script
),但我从来没有之前有过这种必要性,因为 waitforTimeout
和 Mocha 的 timeout
对我的测试场景非常有效。
小提:此说法inserting any amount of async behaviour is making it time out at the 10 sec threshold
不成立。首先,WDIO 是完全异步的。您可能正在使用 sync: true
标志,但在幕后,一切仍然是异步的。
这是一个很大的话题,鉴于手头的信息,我试图尽可能多地涵盖。对不起,如果我没有完全回答你的问题。在评论中告诉我,我会尝试用相关信息更新答案。
希望对您有所帮助。干杯!
我是 运行 一个简单的 WebDriverIO 脚本,插入任何数量的异步行为都会使其在 10 秒阈值(或之前?)处超时。我想控制超时设置,但无论我怎么尝试都无法增加它。
由于我使用的是 ChromeDriver,并非所有的 Selenium 设置都适用,设置 browser.timeouts('implicit', 30000)
(或 script
或 pageLoad
)将抛出错误:unknown error: unknown type of timeout:pageLoad
。
only other timeouts I have found 是
- mochaOpts.timeout
- 等待超时
这是我的测试:
it.only('should be able to register', ()=>{
// Mocha timeout
this.timeout(50000)
browser.url('/encounter/new');
browser.waitUntil( function() {
return browser.isExisting('[name=lastName]');
});
browser.setValue('#problem', 'something fishy');
// this is problematic: comment this out and everything works
// also works with very small timeouts
browser.executeAsync(function(done){
setTimeout(done, 1000);
});
browser.click('#appdetailsheader button');
console.log(browser.getUrl(), browser.log('browser'))
browser.waitUntil( function() {
return !browser.isExisting('[name=lastName]');
});
console.log(browser.getTitle(), browser.getUrl());
console.log(browser.log('browser'))
});
我完全能理解你的沮丧。 WebdriverIO 是高度模块化和可配置的,但这带来了更高的复杂性,这往往会导致混淆。
为此:
// Mocha timeout
this.timeout(50000);
!!! 这没有效果,因为你 configuring/setting 你的摩卡超时 arrow function which is discouraged by Mocha. Read more about it here .
解决方案(选择适用于您的设置):
- 运行 你的脚本 WebdriverIO test-runner 并设置
mochaOpts: { timeout: <desiredTimeout>}
,或者你甚至可以从你的测试中覆盖它 运行 :wdio wdio.config.js --mochaOpts.timeout=<desiredTimeout>
; - 在你的根
describe
语句中设置你的timeout
,或者更好的是,在before
钩子中:before(function() { this.timeout(<desiredTimeout>); (...)});
; - 如果您 运行 使用 Mocha 测试用例,请将超时传递到您的 CLI 命令中(如果您使用它来 运行 您的测试):
mocha yourTestFile.js --timeout <desiredTimeout>
,或在您的mocha.opts
文件中更改它的值;
注意:我相信还有更多的方法可以做到这一点,但其中有一些对我有用。
为此:
browser.waitUntil( function() {
return browser.isExisting('[name=lastName]');
});
!!! 这将始终等待具有属性 name="lastName"
的 element
存在,默认 1000 ms
超时.该值可以通过 waitforTimeout
更改。
解决方案(选择适用于您的设置):
- 明确给你的
waitUntil...
/waitfor...
命令超时:browser.waitUntil( function() { return browser.isExisting('[name=lastName]');}, <desiredTimeout>, <errorMessage>);
; - 运行 你的脚本 WebdriverIO test-runner 并设置
waitforTimeout: <desiredTimeout>
,或者你甚至可以从你的测试中覆盖它 运行 :wdio wdio.config.js --waitforTimeout=<desiredTimeout>
;
最后,我尝试了 运行 几个具有令人厌恶的超时值 (50000 ms
) 的测试用例,并且对于您上面提到的每个问题,它都按预期工作。
waitforTimeout 示例:
日志 (1 failing (57s)
):
[chrome #0-0] ConnectWeb Devices Content Test Suite
[chrome #0-0] 1) "before all" hook
[chrome #0-0]
[chrome #0-0]
[chrome #0-0] 1 failing (57s)
[chrome #0-0]
[chrome #0-0] 1) ConnectWeb Devices Content Test Suite "before all" hook:
[chrome #0-0] Oups! An error occured.
Timed out waiting for element ('span[connectqa-device="events"]') to exist
注意:我以前从未在 WebdriverIO 中使用过 Selenium 超时(implicit
、pageLoad
、script
),但我从来没有之前有过这种必要性,因为 waitforTimeout
和 Mocha 的 timeout
对我的测试场景非常有效。
小提:此说法inserting any amount of async behaviour is making it time out at the 10 sec threshold
不成立。首先,WDIO 是完全异步的。您可能正在使用 sync: true
标志,但在幕后,一切仍然是异步的。
这是一个很大的话题,鉴于手头的信息,我试图尽可能多地涵盖。对不起,如果我没有完全回答你的问题。在评论中告诉我,我会尝试用相关信息更新答案。
希望对您有所帮助。干杯!