使用 Selenium WebDriver 在一次测试中遍历多个浏览器是个好主意吗?
Is it a good idea to iterate through several browsers in one test using Selenium WebDriver?
我正在尝试 运行 在多个浏览器上进行简单测试,这是我得到的代码的模型:
String url = "http://www.anyURL.com";
WebDriver[] drivers = { new FireFoxDriver(), new InternetExplorerDriver,
newChromDriver() };
@Test
public void testTitle() {
for (int i = 0; i < drivers.length; i++) {
// navigate to the desired url
drivers[i].get(url);
// assert that the page title starts with foo
assertTrue(drivers[i].getTitle().startsWith("foo"));
// close current browser session
drivers[i].quit();
}// end for
}// end test
出于某种原因,这段代码似乎在循环的第一次迭代完成之前就打开了多个浏览器。
这里到底发生了什么? good/better 的方法是什么?
请理解我绝不是一个专业的程序员,我也是使用 Selenium 的新手,所以如果我尝试的通常是不好的做法请告诉我,但请不要无礼它。如果您尊重您的回答,我会更加尊重您的意见。
不,不是。
事实上,大多数测试框架都有方便的方法来处理 sequential/parallel 测试执行。您可以参数化测试 class 到 运行 多个浏览器上的相同测试。 TestNG 中有一个属性叫做 Parameters which can be used with setting.xml for cross browser testing without duplicating the code. An example shown here
我不会那样做。
大多数情况下,立即运行针对多个浏览器进行测试是没有意义的。您在开发新代码或更改旧代码时 运行 遇到的大多数问题都不是由于浏览器不兼容造成的。当然,这些会发生,但大多数时候测试会失败,因为,好吧,你的逻辑是错误的,它不仅会在一个浏览器上失败,而且会在所有浏览器上失败。如果你被告知 X 次而不是一次你的代码有问题,你会得到什么?你只是在浪费时间。我通常让代码在 Chrome 和 then 运行 上针对其他浏览器工作。
(顺便说一下,我 运行 我针对 OS、浏览器和浏览器版本的大约 10 种不同组合进行了测试。3 种组合绝对不足以实现良好的覆盖率。IE 11 不例如,行为与 IE 10 相同。我从经验中知道。)
此外,来自多个浏览器的交错测试通常让我感到困惑。我喜欢一份测试报告只涵盖一种配置(OS,浏览器,浏览器版本),这样我就知道是否有任何问题,确切地说是哪个配置有问题,而不必理清在哪个浏览器上失败的原因。
我正在尝试 运行 在多个浏览器上进行简单测试,这是我得到的代码的模型:
String url = "http://www.anyURL.com";
WebDriver[] drivers = { new FireFoxDriver(), new InternetExplorerDriver,
newChromDriver() };
@Test
public void testTitle() {
for (int i = 0; i < drivers.length; i++) {
// navigate to the desired url
drivers[i].get(url);
// assert that the page title starts with foo
assertTrue(drivers[i].getTitle().startsWith("foo"));
// close current browser session
drivers[i].quit();
}// end for
}// end test
出于某种原因,这段代码似乎在循环的第一次迭代完成之前就打开了多个浏览器。 这里到底发生了什么? good/better 的方法是什么?
请理解我绝不是一个专业的程序员,我也是使用 Selenium 的新手,所以如果我尝试的通常是不好的做法请告诉我,但请不要无礼它。如果您尊重您的回答,我会更加尊重您的意见。
不,不是。
事实上,大多数测试框架都有方便的方法来处理 sequential/parallel 测试执行。您可以参数化测试 class 到 运行 多个浏览器上的相同测试。 TestNG 中有一个属性叫做 Parameters which can be used with setting.xml for cross browser testing without duplicating the code. An example shown here
我不会那样做。
大多数情况下,立即运行针对多个浏览器进行测试是没有意义的。您在开发新代码或更改旧代码时 运行 遇到的大多数问题都不是由于浏览器不兼容造成的。当然,这些会发生,但大多数时候测试会失败,因为,好吧,你的逻辑是错误的,它不仅会在一个浏览器上失败,而且会在所有浏览器上失败。如果你被告知 X 次而不是一次你的代码有问题,你会得到什么?你只是在浪费时间。我通常让代码在 Chrome 和 then 运行 上针对其他浏览器工作。
(顺便说一下,我 运行 我针对 OS、浏览器和浏览器版本的大约 10 种不同组合进行了测试。3 种组合绝对不足以实现良好的覆盖率。IE 11 不例如,行为与 IE 10 相同。我从经验中知道。)
此外,来自多个浏览器的交错测试通常让我感到困惑。我喜欢一份测试报告只涵盖一种配置(OS,浏览器,浏览器版本),这样我就知道是否有任何问题,确切地说是哪个配置有问题,而不必理清在哪个浏览器上失败的原因。