0

使用 RemoteWebDriver,我正在尝试在 ClassInitialize 方法内的 VS2012 MSTest 项目中运行以下代码:

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

我得到一个 WebDriver 异常,它显示 /session 标记在我指定的 url 的末尾:

{"意外错误。\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; 字体粗细:粗体;颜色:海军蓝;光标:手;}\r\n @media screen and (max-width: 639px) {\r\n pre { width: 440px; 溢出:自动;空白:预包装;word-wrap:断词;}\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。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下 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 在 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)\r\n 在 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 在 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 步骤,Boolean& completedSynchronously)\r \n-->"}EndProcessRequest(IAsyncResult 结果)\r\n 在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()\r\n 在 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步骤,Boolean& completedSynchronously)\r \n-->"}

任何人都知道它为什么这样做?发生这种情况知道我指向它的网址。

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 上,因为它会尝试在远程服务器上创建自己的会话。

除非我误解了您,否则您听起来好像是在本地运行它。在这种情况下,要么使用封装的驱动程序对象(所以在使用RemoteWebDriverwithDesiredCapabilities.Chrome()的内部ChromeDriver)或简单地省略 URI 属性......

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

要导航到某个地方,请使用

remote.Navigate().GoToUrl("yourlocalwebsite");
于 2013-02-21T15:25:00.160 回答
0

当您访问远程浏览器时,有时它们确实需要用户名和密码。如果您在使用 RemoteWebDriver() 方法创建会话期间意外未能提供相同的信息,您将看到错误说明“服务器错误 ******** /session”。所以尝试添加驱动程序=。new RemoteWebDriver(new URL("https://:<密码/连接密钥>@.com"))

于 2020-06-24T12:16:41.273 回答