C# Selenium IWebDriver Navigate().GoToUrl()未输入url或导航到页面

C# Selenium IWebDriver Navigate().GoToUrl()未输入url或导航到页面,c#,firefox,visual-studio-2012,selenium,webdriver,C#,Firefox,Visual Studio 2012,Selenium,Webdriver,我正在创建一个新的测试项目,想不出任何其他方法来解决我的问题。我有另一个Selenium项目,正如预期的那样工作,并比较了两者以发现差异。但首先,我遇到的主要问题。 在设置中,我调用Driver.Navigate().gotour(“www.test.com”); 没有抛出异常或任何其他表明存在问题的内容,流只是移动到下一个语句,但导航栏中没有输入Url,因此显然驱动程序从未导航到任何页面。驱动程序确实启动了一个新的firefox实例,但它保持空白 当我将这个新项目与一个已经在运行的项目进行比较

我正在创建一个新的测试项目,想不出任何其他方法来解决我的问题。我有另一个Selenium项目,正如预期的那样工作,并比较了两者以发现差异。但首先,我遇到的主要问题。 在设置中,我调用Driver.Navigate().gotour(“www.test.com”); 没有抛出异常或任何其他表明存在问题的内容,流只是移动到下一个语句,但导航栏中没有输入Url,因此显然驱动程序从未导航到任何页面。驱动程序确实启动了一个新的firefox实例,但它保持空白

当我将这个新项目与一个已经在运行的项目进行比较时,它们在很大程度上似乎是相同的。这两个项目都使用NuGet package manager安装了…\packages\Selenium.WebDriver.2.37.0&…\packages\Selenium.Support.2.37.0。 两个项目对.csproj文件中的项目都有相同的引用 --工作项目 ... ....\packages\Selenium.WebDriver.2.37.0\lib\net40\WebDriver.dll 假的 ....\packages\Selenium.Support.2.37.0\lib\net40\WebDriver.Support.dll

--未加工项目 ... ..\packages\Selenium.WebDriver.2.37.0\lib\net40\WebDriver.dll ..\packages\Selenium.Support.2.37.0\lib\net40\WebDriver.Support.dll

这两个项目都不做其他事情。这两个函数的构造函数都只调用: var WebDriver=新的FirefoxDriver()

当我检查WebDriver对象时,我能看到的唯一区别是WindowsHandles属性。工作项目包括: WindowsHandles计数=1

非工作项目有: WindowsHandles{System.Collections.ObjectModel.ReadOnlyCollection}

我不知道它们为什么不同,但因为这是我能找到的唯一区别,我想也许这就是问题所在,但我不知道是否真的如此,也不知道我该如何解决它。 我在WebDriver.Navigate().gotour()周围添加了一个try/catch块,没有捕获任何异常。
这两个项目都以.NET4.0框架为目标。
任何帮助都是非常适当的

在我最终崩溃并决定在StackOverflow上发表文章之后,我就发现了这一点。我的问题是
IWebDrivers
坚持以
http
开头的传入URL。在我的URL前面加上前缀后,它就起作用了。

下面是一个简单的例子:

  • 添加NuGet包Selenium.WebDriver

  • 从下载chromedriver()或任何其他驱动程序(非seleniumhq开发的第三方浏览器驱动程序部分)

  • 将文件复制到Visual Studio中的项目目录,并为该文件设置以下属性:

    构建操作=无; 复制到输出目录=如果较新,则复制

  • 安装后,请尝试运行以下示例代码:

    var driver = new ChromeDriver();
    var navigate = driver.Navigate();
    navigate.GoToUrl("http://www.microsoft.com"); //works
    navigate.GoToUrl("www.microsoft.com"); //does not work
    
    祝你好运

    navigate.GoToUrl("http:\\www.microsoft.com"); // "\\" instead of "//", wont work
    navigate.GoToUrl("http://www.microsoft.com"); // that one works perfectly.
    
    用反斜杠而不是正斜杠也不行。。。我只花了大约一个小时,弄清楚这件事

    URL地址,正确的必须是正斜杠。

    只要在URL“http://”上连接,这个问题就解决了。o、 o 我不知道为什么会出现这个错误,但问题已经解决了。 就这么做吧

    我的Navigate()不起作用的问题是,驱动程序焦点在错误的选项卡上(最常见的情况是,如果您已经通过单击当前选项卡上的“\u blank”链接打开了另一个选项卡),并且您正在调用Navigate().gotour()

    然后,您应该再次选择要更改url的选项卡,如下所示: C#示例


    Firefox的哪个版本?在其他浏览器上有什么不同吗?这似乎是一个非常常见的问题。如果URL格式不正确,则无法导航,我会遇到类似的情况,在URL末尾有?#选项卡评论。这适用于ChromeDriver,但不适用于PhantomJS驱动程序。认为这可能是PhantomJS的限制…谢谢-奇怪的是,IE驱动程序不需要
    http
    前缀,这让我很反感。谢谢你的回答。我得到了一个奇怪的行为,在浏览器可见的情况下,它在没有http://的情况下运行得很好,但是在无头运行时,它就不工作了。添加
    http://
    使其正常工作。(我正在使用Chrome网络驱动程序)@Darien Everett或任何人-它能与https一起工作吗?我之所以这么问,是因为我必须用这个来传递一些以https开头的URL。有人知道吗?
    var tabs = this.browser.WindowHandles;
    this.browser.SwitchTo().Window(tabs[0]);