我使用iWeb中的驱动程序的列表,通过生产线来进行所有的浏览器测试,线路:
[ClassInitialize]
public static void ClassInitialize(TestContext context) {
drivers = new List<IWebDriver>();
firefoxDriver = new FirefoxDriver();
chromeDriver = new ChromeDriver(path);
ieDriver = new InternetExplorerDriver(path);
drivers.Add(firefoxDriver);
drivers.Add(chromeDriver);
drivers.Add(ieDriver);
baseURL = "http://localhost:4444/";
}
[ClassCleanup]
public static void ClassCleanup() {
drivers.ForEach(x => x.Quit());
}
..and then am able to write tests like this:
[TestMethod]
public void LinkClick() {
WaitForElementByLinkText("Link");
drivers.ForEach(x => x.FindElement(By.LinkText("Link")).Click());
AssertIsAllTrue(x => x.PageSource.Contains("test link"));
}
..where我写我自己的方法WaitForElementByLinkText和AssertIsAllTrue来执行操作的每个驱动程序,并在出现任何故障,输出信息帮助我识别器浏览器可能失败:
public void WaitForElementByLinkText(string linkText) {
List<string> failedBrowsers = new List<string>();
foreach (IWebDriver driver in drivers) {
try {
WebDriverWait wait = new WebDriverWait(clock, driver, TimeSpan.FromSeconds(5), TimeSpan.FromMilliseconds(250));
wait.Until((d) => { return d.FindElement(By.LinkText(linkText)).Displayed; });
} catch (TimeoutException) {
failedBrowsers.Add(driver.GetType().Name + " Link text: " + linkText);
}
}
Assert.IsTrue(failedBrowsers.Count == 0, "Failed browsers: " + string.Join(", ", failedBrowsers));
}
的IEDriver慢得令人痛苦,但这将有3 O f并行运行测试的主要浏览器
这是最好的答案 – 2013-01-10 17:10:30
@alanning我无法让我的系统识别IE驱动程序所在的位置,我需要将它放在哪里才能运行? – DEnumber50 2015-04-21 19:08:56