0

我正在酱实验室上用量角器测试一个非角度页面。由于注销页面,我的测试经常失败。注销页面上有广告,但是我尝试设置超时多长时间,它达到了它并且规范失败了。

当我确定我没有达到超时时,我在测试期间遇到了同样的失败 a) 和 b)。有任何想法吗?

我的超时:

allScriptsTimeout: 100000,
defaultTimeoutInterval: 110000,
getPageTimeout: 120000,
browser.manage().timeouts().implicitlyWait(10000);   

错误信息:

a) ✗ logout
- Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.

b)
✗ logout
- Failed: Wait timed out after 60096ms

代码:

    beforeEach(() => {
    browser.manage().timeouts().implicitlyWait(10000);
    beforeEach(function(done) { done(); }, 10000);
    });
  
    ListPage.logout.click();
    browser.wait(EC.stalenessOf(ListPage.logout), 120000); 

4

3 回答 3

1

(如果我得到了ignoreSynchronization = true,请回答这个问题)我在我的配置中得到了这个。规范在本地运行成功(大多数时候),我尝试了很多东西,不同的超时,beforeEach(function(done){ done() ; }, 10000);. 每次点击的预期条件,但测试仍然失败。最糟糕的是,当注销失败时,下一个规范也失败了,如下所示。

[iphone 9.2 OS X 10.10 #31] A Jasmine spec timed out. Resetting the WebDriver Control Flow.
[iphone 9.2 OS X 10.10 #31]     ✗ logout
[iphone 9.2 OS X 10.10 #31]       - Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.

[iphone 9.2 OS X 10.10 #31] **************************************************
[iphone 9.2 OS X 10.10 #31] *                    Failures                    *
[iphone 9.2 OS X 10.10 #31] **************************************************
[iphone 9.2 OS X 10.10 #31] 
[iphone 9.2 OS X 10.10 #31] 1) Feedback Test open feedback
[iphone 9.2 OS X 10.10 #31]   - Failed: Element does not exist in cache
于 2016-06-08T08:06:25.953 回答
0

我不确定这段代码应该做什么,但无论如何你应该知道beforeEach在每个规范之前调用,即在每个it函数之前。

我在一个 Web 应用程序中使用 Protractor 不断轮询超时,迫使我设置browser.ignoreSynchronization = true;我的建议是:如果你可以避免这样做......只是避免它。您将花费至少一半的时间来调试同步问题。

编辑:由于您正在测试非角度应用程序,因此您必须使用browser.ignoreSynchronization = true

这意味着您必须自己管理同步,并确保发送到浏览器的每个命令都会在您需要时发送。

在这种情况下,通过编写类似的东西自己管理同步

ListPage.logout.click()
.then(function(){
    browser.wait(EC.stalenessOf(ListPage.logout), 120000);
});
于 2016-06-08T07:59:59.027 回答
0

你必须把它放在你的配置文件中,以解决这个问题:

    onPrepare: function () {
    browser.ignoreSynchronization = true;
    },
于 2016-06-07T16:46:10.703 回答