首先,一个警告:我是c#的新手,所以请原谅我,如果这是一个荒谬的简单问题。我正在将一些Selenium Python测试转换为c#,这才刚刚开始。
所以,我在一个测试项目中有以下示例,试图让Selenium 2在c#中工作:
public class Selenium2RemoteWebDriver
{
static void Main(string[] args)
{
var pltfm = new Platform(PlatformType.Windows);
var environment = new Dictionary<string, object>
{
{"username", "my-sauce-name"},
{"accessKey", "my-sauce-key"},
{"browserName", "iexplore"},
{"version", "8"},
{"platform", "Windows"},
{"name","Hello, Sauce!"}
};
//foreach (var pair in environment)
//{
// Console.WriteLine("Key: {0}, Value: {1}", pair.Key, pair.Value);
//}
var capabilities = new DesiredCapabilities(environment);
var driver = new RemoteWebDriver(
new Uri("http://my-sauce-id:my-sauce-key@ondemand.saucelabs.com:80/wd/hub"), capabilities);
driver.Navigate().GoToUrl("http://www.google.com");
var search = driver.FindElement(By.Name("q"));
search.SendKeys("Hello, WebDriver");
search.Submit();
Console.WriteLine(driver.Title);
driver.Quit();
}
}
当我运行这个测试时,我得到以下消息:
<>之前测试"Selenium2_Testing。Selenium2RemoteWebDriver' failed:给定的键不存在于字典中。但是当我取消print语句的注释时,我可以看到字典是完整的:
关键字:username,值:my-sauce-id关键字:accessKey,值:my-sauce-key关键字:browserName,值:iexplore关键字:version,取值:8关键字:平台,值:Windows关键:名称,值:你好,酱!之前我做错了什么?
编辑:抱歉:我应该包括我正在使用:
Visual Studio 2010 (10.30319.1)
.Net Framework 4.0 (30319)
Selenium WebDriver 2.0b3(已编译下载)
. net绑定中的DesiredCapabilities对象最近(2.0b3之后)被重写,以正确地允许传递字典来定义任意功能。
原来我使用的程序集有问题。从最新的源代码编译并将这些二进制文件导入项目后,这个问题就解决了。