Selenium IWebDriver Navigate()。GoToUrl()没有输入url或导航到页面

时间:2013-11-26 22:15:20

标签: c# firefox visual-studio-2012 selenium webdriver

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

当我将这个新项目与已经在工作的项目进行比较时,它们在大多数情况下看起来都是相同的。这两个项目都有... \ packages \ Selenium.WebDriver.2.37.0&使用NuGet包管理器安装了... \ packages \ Selenium.Support.2.37.0。 这两个项目对.csproj文件中的项目具有相同的引用 - 工作项目 ...                           .... \包\ Selenium.WebDriver.2.37.0 \ LIB \ net40 \ WebDriver.dll                 假       .... \包\ Selenium.Support.2.37.0 \ LIB \ net40 \ WebDriver.Support.dll     

- 不工作的项目 ...                           .. \包\ Selenium.WebDriver.2.37.0 \ LIB \ net40 \ WebDriver.dll                 .. \包\ Selenium.Support.2.37.0 \ LIB \ net40 \ WebDriver.Support.dll     

两个项目都没有做任何其他事情。两者的构造函数只是调用: var WebDriver = new FirefoxDriver();

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

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

我不知道他们为什么会有所不同,但因为这是我能找到的唯一区别,我想也许这就是问题,但我不知道是不是真的如此,或者我是如何解决它的。 我在WebDriver.Navigate()。GoToUrl()周围添加了一个try / catch块,没有异常被捕获。
这两个项目都针对.NET 4.0框架。 任何帮助都非常适合。

5 个答案:

答案 0 :(得分:20)

在我最终崩溃并决定在StackOverflow上发布后,我发现了它。我的问题是IWebDrivers坚持以http开头的传入网址。一旦我用我的URL作为前缀,它就有用了。

答案 1 :(得分:2)

以下是一个简单的示例:

  1. 添加NuGet包Selenium.WebDriver

  2. https://sites.google.com/a/chromium.org/chromedriver/下载chromedriver(http://www.seleniumhq.org/download/)或任何其他驱动程序(seleniumhq未开发的第三方浏览器驱动程序部分)

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

    构建行动=无; 复制到输出目录=如果较新则复制

  4. 安装完成后,请尝试运行以下示例代码:

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

答案 2 :(得分:2)

另外

navigate.GoToUrl("http:\\www.microsoft.com"); // "\\" instead of "//", wont work
navigate.GoToUrl("http://www.microsoft.com"); // that one works perfectly.
用反斜杠代替正斜杠也不会工作......我只花了大约一个小时,搞清楚了。

网址,正确地必须使用正斜杠。

答案 3 :(得分:0)

只需在网址“http://”上连接,这个问题就解决了。 o.O 我不知道为什么会出现这个错误,但是已经解决了。 做吧!

答案 4 :(得分:0)

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

然后,您应该再次选择标签,在其中更改网址,如下所示: C#示例

var tabs = this.browser.WindowHandles;
this.browser.SwitchTo().Window(tabs[0]);