我正在创建一个新的测试项目,并且想不出其他任何事情来尝试解决我的问题。我有另一个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框架。
任何帮助都非常适合。
答案 0 :(得分:20)
在我最终崩溃并决定在StackOverflow上发布后,我发现了它。我的问题是IWebDrivers
坚持以http
开头的传入网址。一旦我用我的URL作为前缀,它就有用了。
答案 1 :(得分:2)
以下是一个简单的示例:
添加NuGet包Selenium.WebDriver
从https://sites.google.com/a/chromium.org/chromedriver/下载chromedriver(http://www.seleniumhq.org/download/)或任何其他驱动程序(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
祝你好运!
答案 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]);