Multithreading 如何同时使用2个Firefox驱动程序?Selenium支持多线程吗?
如何同时使用2个Firefox驱动程序?Selenium支持多线程吗 我有下面的测试,它打开了两个firefox浏览器,但两个导航都只在第一个浏览器实例上发生Multithreading 如何同时使用2个Firefox驱动程序?Selenium支持多线程吗?,multithreading,testing,selenium,webdriver,Multithreading,Testing,Selenium,Webdriver,如何同时使用2个Firefox驱动程序?Selenium支持多线程吗 我有下面的测试,它打开了两个firefox浏览器,但两个导航都只在第一个浏览器实例上发生 [Test] public void TestMultithreading() { var tasks = new List<Task> { new Task(goToBbc),
[Test]
public void TestMultithreading()
{
var tasks = new List<Task>
{
new Task(goToBbc),
new Task(goToGoogle)
};
tasks.ForEach(task => task.Start());
Task.WaitAll(tasks.ToArray());
}
private void goToBbc()
{
openBrowserAndGoTo("http://www.bbc.com");
}
private void goToGoogle()
{
openBrowserAndGoTo("http://www.google.com");
}
private void openBrowserAndGoTo(string url)
{
var webDriver = new FirefoxDriver();
webDriver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 1, 0));
webDriver.Navigate().GoToUrl(url);
Thread.Sleep(5000);
webDriver.Quit();
}
[测试]
public void testmulti-threading()
{
var tasks=新列表
{
新任务(goToBbc),
新任务(GoToLogle)
};
tasks.ForEach(task=>task.Start());
Task.WaitAll(tasks.ToArray());
}
私有void goToBbc()
{
openBrowserAndGoTo(“http://www.bbc.com");
}
私有void gotogogle()
{
openBrowserAndGoTo(“http://www.google.com");
}
私有void openBrowserAndGoTo(字符串url)
{
var webDriver=新的FirefoxDriver();
webDriver.Manage().Timeouts().ImplicitlyWait(新的时间跨度(0,1,0));
webDriver.Navigate().gotour(url);
睡眠(5000);
webDriver.Quit();
}
希望问题清楚
谢谢,Selenium RC/WebDriver旨在自动化浏览器。如果您想并行运行多个测试,您应该看看如何通过Selenium Grid/RemoteDriver运行脚本。要并行运行WebDriver测试,每个线程需要一个WebDriver实例。每个实例对应一个浏览器会话。您的示例应该有效,因为每个任务都创建自己的实例 您可能还需要一个支持并行化的测试运行程序:TestNG for Java,MBunit for.NET 也就是说,不同浏览器对多个webdriver实例的支持不同:
- Chrome在本地运行多个Chrome实例时效果很好
- Firefox有时可以工作,这取决于webdriver和FF的版本
- IE无法在本地驱动多个实例
我们使用run a grid(大约20个远程)来支持所有浏览器上的并行执行 TestNG是并行运行测试的一个非常好的选项。我们将其用于产品自动化。请尝试在Selenium中进行多处理,然后控制过程使用程序参数执行不同的操作。既然其他人还没有提到这一点,我将向Maven及其Java中的Selenium插件发出一声欢呼 Maven的Surefire和Failsafe插件管理构建(本例中为套件)的测试生命周期。我已经将这些插件与JUnit一起用于运行多线程selenium测试。我相信TestNG也同样有能力 对于这种类型的项目,您可以从命令行运行
mvn test
或mvn verify
,以启动测试并报告结果。如果您的IDE支持maven构建,那么您可以右键单击测试包并从那里执行测试
您可以在本地运行测试(它将弹出许多浏览器),或者将您的套件指向远程集线器以远程执行测试
我还应该注意到,您需要将重点放在编写本质上是原子的测试上,这些测试可以单独运行,然后让构建系统作为一个套件来执行它们。附带问题:我一直认为如果我有两个实例,与driver1和driver2一样,它将运行两个不同的浏览器窗口…我上面的代码将打开两个浏览器实例,但导航、findelement等仅在第一个打开的浏览器上发生@bryanbcook,在我的示例中有没有代码示例如何使用远程驱动程序?这个测试对我来说还可以(在Chrome 27、IE 10、Firefox 21中测试)。我认为这种行为现在已经固定了。