RemoteWebDriver将'/ session'附加到url

时间:2013-02-21 15:17:22

标签: selenium web driver

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

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

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

  

{“意外错误。\ r \ n \ r \ n \ r \ n \ n \ n   无法找到资源。\ r \ n \ r \ n \ n   \ r \ n身体   {字体家庭:\“宋体\”;字型重量:正常;字体大小:   .7em;颜色:黑色;} \ r \ n p   {字体家庭:\“宋体\”;字型重量:正常;颜色:黑色;边距:   -5px} \ r \ n b {font-family:\“Verdana \”; font-weight:bold; color:black; margin-top:   -5px} \ r \ n H1 {font-family:\“Verdana \”; font-weight:normal; font-size:18pt;颜色:红色   } \ r \ n H2 {   字体家庭:\“宋体\”;字型重量:正常;字体大小:14pt;颜色:栗色   } \ r \ n pre {font-family:\“Consolas \”,“Lucida   控制台\”,等宽;字体大小:11磅;余量:0;填充:0.5em;行高:14pt} \ r \ n   .marker {font-weight:bold; color:black; text-decoration:none;} \ r \ n
  .version {color:gray;} \ r \ n .error {margin-bottom:10px;} \ r \ n   .expandable {text-decoration:underline;字体重量:粗体;颜色:海军;   光标:手; } \ r \ n @media screen和(max-width:639px){\ r \ n   pre {width:440px;溢出:自动;白色空间:预包装;自动换行:   打破字; } \ r \ n} \ r \ n @media屏幕和(max-width:   479px){\ r \ n pre {width:280px; } \ r \ n} \ r \ n
  \ r \ n \ r \ n \ r \ n \ r \ n \ r \ n \ n   

'/MyProject.Web'中的服务器错误   应用

\ r \ n \ r \ n
  

无法找到资源。

\ r \ n \ r \ n \ n
  \ r \ n \ r \ n 描述: HTTP 404.您的资源   正在寻找(或其中一个依赖)可能已被删除,   更改名称,或暂时不可用。请   查看以下URL并确保拼写清楚   正确。\ r \ n

\ \ r \ n \ r \ n 要求   网址: /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 \ n   \ r \ n \ r \ nc__DisplayClass1d.b__18(IAsyncResult的   asyncResult)\ r \ n at   System.Web.Mvc.Async.AsyncResultWrapper<> c__DisplayClass4.b__3(IAsyncResult的   ar)\ r \ n at   System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End(个)\ r \ n   在System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult   asyncResult)\ r \ n at   System.Web.Mvc.Async.AsyncResultWrapper<> c__DisplayClass4< MakeVoidDelegate> b__3(IAsyncResult的   ar)\ r \ n at   System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult< /代码> 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 at   System.Web.Mvc.MvcHandler<> c__DisplayClass8.b__3(IAsyncResult的   asyncResult)\ r \ n at   System.Web.Mvc.Async.AsyncResultWrapper<> c__DisplayClass4.b__3(IAsyncResult的   ar)\ r \ n at   System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End(个)\ r \ n   在System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult   asyncResult)\ r \ n at   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult的   结果)\ r \ n at   System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute(个)\ r \ n   在System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,   布尔和放大器; completedSynchronously个)\ r \ n - >“中}

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

2 个答案:

答案 0 :(得分: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信息附加到网址上,因为它会尝试在远程服务器上创建自己的会话。

你听起来好像在本地运行,除非我误解了你。在这种情况下,要么使用封装的驱动程序对象(因此在使用RemoteWebDriver DesiredCapabilities.Chrome()内部使用ChromeDriver)或者只是省略URI属性...

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

要在某处导航使用此

remote.Navigate().GoToUrl("yourlocalwebsite");

答案 1 :(得分:0)

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