0

RemoteWebDriver を使用して、ClassInitialize メソッド内の VS2012 MSTest プロジェクトで次のコードを実行しようとしています。

RemoteWebDriver remote = new RemoteWebDriver(new Uri("http://localhost.website/"), DesiredCapabilities.Chrome());

指定した URL の末尾にタグ付けされた /session を示す WebDriver 例外が発生します。

{"予期しないエラーです。\r\n\r\n \r\n
リソースが見つかりません。\r\n \r\n
\r\n body {font-family:\"Verdana\";font-weight :normal;font-size: .7em;color:black;} \r\np {font-family:\"Verdana\";font-weight:normal;color:black;margin-top: -5px}\r\ nb {font-family:\"Verdana\";font-weight:bold;color:black;margin-top: -5px}\r\n H1 { font-family:\"Verdana\";font-weight:normal ;font-size:18pt;color:red }\r\n H2 { font-family:\"Verdana\";font-weight:normal;font-size:14pt;color:maroon }\r\n pre {font -family:\"Consolas\",\"Lucida Console\",Monospace;font-size:11pt;margin:0;padding:0.5em;line-height:14pt}\r\n .marker {font-weight:太字; 色: 黒; テキスト装飾: なし;}\r\n
.version {color: gray;}\r\n .error {margin-bottom: 10px;}\r\n .expandable { text-decoration:underline; font-weight:太字; 色:ネイビー; カーソル:手; }\r\n @media screen and (max-width: 639px) {\r\n pre { width: 440px; オーバーフロー: 自動; 空白: プレラップ; ワードラップ: ブレークワード; }\r\n }\r\n @media screen and (max-width: 479px) {\r\n pre { width: 280px; }\r\n }\r\n
\r\n \r\n\r\n \r\n\r\n

'/MyProject.Web' アプリケーションでサーバー エラーが発生しました。

\r\n\r\n

リソースが見つかりません。

\r\n\r\n
\r\n\r\n 説明: HTTP 404。探しているリソース (またはその依存関係の 1 つ) が削除されたか、名前が変更されたか、一時的に利用できない可能性があります。次の URL を見直して、スペルが正しいことを確認してください。\r\n

\r\n\r\n 要求された URL: /MyProject.Web/session

\r\n\r\n
\r\n\r\ n バージョン情報:  Microsoft .NET Framework バージョン:4.0.30319; ASP.NET バージョン:4.0.30319.18033\r\n\r\n \r\n\r\n
\r\n\r\nc__DisplayClass1d.b__18(IAsyncResult asyncResult)\r\n System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.b__3(IAsyncResult ar)\r\n System.Web.Mvc.Async .AsyncResultWrapper.WrappedAsyncResult`1.End()\r\n at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)\r\n at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate> b__3(IAsyncResult ar)\r\n System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult</code>1.End() で\r\n System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) で\r \n System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult)\r\n System.Web.Mvc.MvcHandler.<>c__DisplayClass8.b__3(IAsyncResult asyncResult)\r \n System.Web.Mvc.Async にあります。AsyncResultWrapper.<>c__DisplayClass4.b__3(IAsyncResult ar)\r\n で System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()\r\n で System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) )\r\n で System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult 結果)\r\n で System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()\ r\n at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)\r\n-->"}EndProcessRequest(IAsyncResult 結果)\r\n System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()\r\n System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)\r \n-->"}EndProcessRequest(IAsyncResult 結果)\r\n System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()\r\n System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)\r \n-->"}

なぜこれを行っているのか誰にも分かりますか?これは、私が指しているURLに関係なく発生します。

4

2 に答える 2

1

エラーを適切に読んだ後(お詫び)...

コンストラクタの使い方が間違っています。

コードをざっと見てみると、このコンストラクターを使用していることがわかります。

/// <summary>
/// Initializes a new instance of the RemoteWebDriver class
/// </summary>
/// <param name="remoteAddress">URI containing the address of the WebDriver remote server (e.g. http://127.0.0.1:4444/wd/hub).</param>
/// <param name="desiredCapabilities">An <see cref="ICapabilities"/> object containing the desired capabilities of the browser.</param>
public RemoteWebDriver(Uri remoteAddress, ICapabilities desiredCapabilities)
    : this(remoteAddress, desiredCapabilities, RemoteWebDriver.DefaultCommandTimeout)
{
}

渡す URI プロパティは、リモート グリッド サーバーのアドレスですあなたが行きたい場所ではありません。

Selenium は、リモート サーバーsession上に独自のセッションを作成しようとするため、URL に情報を追加します。

私があなたを誤解していない限り、あなたはこれをローカルで実行しているように聞こえます。その場合、カプセル化されたドライバー オブジェクトを使用するか (使用の中で を使用RemoteWebDriverDesiredCapabilities.Chrome()ますChromeDriver)、単に URI プロパティを省略します...

RemoteWebDriver remote = new RemoteWebDriver(DesiredCapabilities.Chrome());

どこかをナビゲートするには、これを使用します:

remote.Navigate().GoToUrl("yourlocalwebsite");
于 2013-02-21T15:25:00.160 に答える