使用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 - >“中}
任何人都知道它为什么这样做?发生这种情况就知道了我指出的网址。
答案 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”))