0

Protractor を使用して AngularJS アプリケーションをテストしています (Chrome と IE ドライバーの両方を使用)。IEDriverServer はほとんどのページで正常に動作しますが、この 1 つのページを除いて、ほとんどすべての 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

私はこの問題を抱えていましたが、私が見つけた唯一の解決策は、IIS8 を必要とする WebSocket で SignalR を動作させることでした。私の場合、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 に答える