【发布时间】:2016-12-13 17:22:11
【问题描述】:
我在使用 Selenium Grid 并尝试使用特定版本的 IE 注册节点然后为该浏览器的实例调用 Grid Hub 时遇到问题。我的设置:
- 带有 C# 绑定的 Selenium 3.0.1
- 一个定义我的页面对象/框架的类库和一个包含我的 NUnit 3.5 测试的类库
- 一个运行 Server 2008 的 VM 托管数据库和我的 Selenium Grid Hub,以“java -jar C:\Selenium\selenium-server-standalone-3.0.1.jar -role hub -maxSession 20”开始
- 一个使用我的 webdriver 节点运行 Windows 7 和 IE9 的 VM
我以(我为可读性添加换行符,它是 bat 文件中的一行)开始我的节点:
java -Dwebdriver.ie.driver=C:\Selenium\IEDriverServer.exe -Dwebdriver.chrome.driver=C:\Selenium\chromedriver.exe -jar C:\Selenium\selenium-server-standalone-3.0.1.jar -role webdriver -hub http://10.10.1.20:4444/grid/register -port 5566 -maxSession 20
-browser "browserName=internet explorer,version=9,maxInstances=1,platform=ANY,seleniumProtocol=WebDriver"
-browser "browserName=chrome,maxInstances=5"
-browser "browserName=firefox,maxInstances=5"
我调用 RemoteWebDriver 的代码是:
caps = new DesiredCapabilities();
caps.SetCapability("browserName", "internet explorer");
caps.SetCapability("version", "9");
WebDriver = new RemoteWebDriver(new System.Uri("http://10.10.1.20:4444/wd/hub"), caps);
当我运行此代码时,当代码创建新的 RemoteWebDriver 集线器返回时:
INFO - Got a request to create a new session: Capabilities [{browserName=internet explorer, version=9}]
Visual Studio 然后显示返回以下错误:
System.InvalidOperationException : Error forwarding the new session cannot find : Capabilities [{browserName=internet explorer, version=9}] TearDown : System.NullReferenceException : Object reference not set to an instance of an object.
我尝试将节点和我的代码设置为使用“9.0”而不是“9”,并将 browserName 设置为“iexplore”而不是“Internet Explorer”,正如我在网上找到的一些帖子所建议的那样,但没有成功.我花了两个小时浏览 Google 和 Selenium 文档,但似乎没有人列举各种浏览器的“版本”功能所期望的格式,所以我什至不能确定我正在使用正确的价值观。如果我从节点启动批处理中删除版本标志并在我的 C# 代码中对版本的 setCapability 调用,浏览器启动正常。但是,我将有一个包含多个 IE 变体的网格进行测试,并且需要能够指定我想要的 IE 版本。谁能帮助我以正确的方式为特定版本的 IE 启动节点,将该节点注册到集线器,并使用 RemoteWebDriver 调用它?
【问题讨论】:
标签: c# selenium internet-explorer selenium-webdriver selenium-grid2