0

我正在使用 Protractor 测试我们的 AngularJS 应用程序(同时使用 Chrome 和 IE 驱动程序)。IEDriverServer 在大多数页面上都可以正常工作,除了这一页,几乎所有 Click() 事件都会导致“等待页面加载超时”异常。

IE驱动选项设置如下:

var ieOptions = new InternetExplorerOptions
{
    BrowserCommandLineArguments = "-private",
    EnableNativeEvents = false,
    IgnoreZoomLevel = true,
    IntroduceInstabilityByIgnoringProtectedModeSettings = false
};

// No Proxy
var proxy = new Proxy()
{
    Kind = ProxyKind.Direct
};

ieOptions.Proxy = proxy;

此外,IgnoreSynchronization = true。

编辑 1:我认为这个页面和其他页面的区别在于它使用了 Javascript SignalR。我在它的 head 部分中找到了此代码,而其他页面中没有。这可能是超时异常的原因吗?我该怎么做才能让它工作?

<script src="https://localhost:37121/signalr/poll?transport=longPolling&amp;connectionToken=AQAAANCMnd8BFdERjHoAwE%2FCl%2BsBAAAAUwalDb1qVUqsBmCLuURNHwAAAAACAAAAAAADZgAAwAAAABAAAADr9g2GQVKvK1pb%2FivxTu%2BBAAAAAASAAACgAAAAEAAAAB5eAALolT7EtoL1Y9C1xPooAAAA3TnUmbajNM9RIJ8oDRsPGLjavLcB2M10CyoJMXrnpv9H9XzB4bRVLBQAAABrEcirF0pjR5t%2Fst0mWJ0MnJYVlA%3D%3D&amp;messageId=d-9774B3D8-B%2C24%7CC%2C0%7CD%2C0%7CE%2C0&amp;connectionData=%5B%7B%22name%22%3A%22devicehub%22%7D%5D&amp;tid=8&amp;callback=jQuery21103819021041958953_1481549049341&amp;_=1481549049371" async=""></script>

编辑 2:我将 ImplicitWait、SetPageLoadTimeout 和 SetScriptTimeout 设置多长时间并不重要。在指定的等待时间过后,单击事件将返回异常。

4

2 回答 2

1

我遇到了这个问题,我发现的唯一解决方案是让 SignalR 与需要 IIS8 的 WebSockets 一起工作。就我而言,SignalR 正在使用长轮询,它可以长时间保持连接打开。即使您增加超时,这也会使您的测试速度慢得无法接受。请参阅:带 Web 套接字的 SignalR

于 2017-01-09T12:52:06.757 回答
0

在您的点击事件之间,如果页面正在刷新。然后请检查browser.manage().timeouts().pageLoadTimeout(<timeout in milliseconds>)您的 conf.js 文件。

在 C# 中,pageLoadTimeout() 有以下方式的选项:

seleniumDriver.manage().timeouts()
      .pageLoadTimeout(xx, TimeUnit.SECONDS)
      .implicitlyWait(xx, TimeUnit.SECONDS)
      .setScriptTimeout(xx, TimeUnit.SECONDS);

我认为您需要查找 pageLoadTimeout(),因为量角器内部只会等待指定时间加载页面。之后它将抛出等待页面加载的超时。

于 2016-12-12T14:29:38.553 回答