HELPPPP PLEASSEE!
现在我已经使用以下内容设置了selenium网格:
-Machine A上有一个集线器和节点(集线器在同一台机器上的节点)。 -Machine B(与集线器不同的机器不一样),上面有2个节点。
因此,我现在拥有一个集线器和3个节点:集线器机器(机器A)上的1个节点也充当节点,而另一个物理节点机器上的节点2(机器B)。
因此,通过此设置,我可以并行AFAIK运行3个测试用例。
我会帮助我所做的一切。
集线器的设置命令:
java -jar selenium-server-standalone-3.0.0-beta2.jar -role hub -port 4445
(我更改了默认端口号)
节点的设置命令:
java -jar -Dwebdriver.ie.driver =" C:\ Libraries \ IEDriverServer.exe" -Dwebdriver.chrome.driver =" C:\库\ chromedriver.exe" selenium-server-standalone-3.0.0-beta2.jar -role webdriver -hub http://HubIP:4445/grid/register -port 4453
然后是C#中用于设置和测试的代码:
using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Safari;
using OpenQA.Selenium.Edge;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Support.UI;
using OpenQA.Selenium.Remote;
using NUnit;
using NUnit.Framework;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace GridTest
{
[TestFixture]
[Parallelizable]
public class Grid_Test
{
private IWebDriver driver;
[SetUp]
public void Setup()
{
///Chrome setup///
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities = DesiredCapabilities.Chrome();
capabilities.SetCapability(CapabilityType.BrowserName, "chrome");
capabilities.SetCapability("marionette", false);
capabilities.SetCapability(CapabilityType.Platform, new Platform(PlatformType.Any));
driver = new RemoteWebDriver(new Uri("http://10.10.17.223:4445/wd/hub"), capabilities);
}
[Test]
[Parallelizable]
public void SeleniumSearch()
{
//var driver = new FirefoxDriver();
driver.Navigate().GoToUrl("http://www.seleniumhq.org/");
}
[TearDown]
public void Teardown()
{
driver.Quit();
}
}
[TestFixture]
[Parallelizable]
public class Test_Grid2
{
IWebDriver driver2;
[SetUp]
public void Setup()
{
///Chrome setup///
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities = DesiredCapabilities.Chrome();
capabilities.SetCapability(CapabilityType.BrowserName, "chrome");
capabilities.SetCapability("marionette", false);
capabilities.SetCapability(CapabilityType.Platform, new Platform(PlatformType.Any));
driver2 = new RemoteWebDriver(new Uri("http://10.10.17.223:4445/wd/hub"), capabilities);
}
[Test]
[Parallelizable]
public void BingSearch()
{
//var driver = new FirefoxDriver();
driver2.Navigate().GoToUrl("http://www.bing.com");
}
[TearDown]
public void Teardown()
{
driver2.Quit();
}
}
[TestFixture]
[Parallelizable]
public class Test_Grid3
{
IWebDriver driver3;
[SetUp]
public void Setup()
{
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities = DesiredCapabilities.Chrome();
capabilities.SetCapability(CapabilityType.BrowserName, "chrome");
capabilities.SetCapability("marionette", false);
capabilities.SetCapability(CapabilityType.Platform, new Platform(PlatformType.Any));
driver3 = new RemoteWebDriver(new Uri("http://10.10.17.223:4445/wd/hub"), capabilities);
}
[Test]
[Parallelizable]
public void SeleniumSearch()
{
//var driver = new FirefoxDriver();
driver3.Navigate().GoToUrl("http://www.seleniumhq.org/");
}
[TearDown]
public void Teardown()
{
driver3.Quit();
}
}
}
我现在有两个主要问题:
1)当我运行测试时,它应该并行运行3个测试,这不会发生同时运行的2个测试并且我不知道为什么。
2)测试不在Chrome浏览器上运行,它只是打开页面而测试不会继续。命令中的错误说: Chrome无法启动:崩溃。
知道来自哪些问题
非常感谢提前。
修改
- 通过再次卸载和安装chrome解决了第二个问题。我不知道旧浏览器的问题是什么。
EDIT2 - 解决了第一个问题,我知道网格社区和Nunit一样非常差,仅运行2个测试的问题是因为 LevelOfParallelism 属性的默认值 所以要增加并行运行的测试数量,请在assemblyInfo.cs文件中写入 [assembly:LevelOfParallelism(X)] 其中X是可以运行的并行线程数。
正在运行与集线器核心数量相关的多个测试 只要 ??因为如果是这样我的集线器只有2个内核所以也许这就是 案件。但这对集线器必须具有非常有限的限制 很多核心。我想问一下,因为节点默认情况下可以有11个 实例(5个chrome,5个FF,1个IE),它能够运行11个测试用例 在那些实例上并行??!
答案 0 :(得分:0)
通过再次卸载和安装chrome来解决第二个问题。我不知道旧浏览器的问题是什么。
解决了第一个问题,我知道网格社区在这里和Nunit都很差,运行2个测试的问题仅仅是因为默认LevelOfParallelism属性的值,以便增加并行运行的测试数量在assemblyInfo.cs文件中写这个 [assembly:LevelOfParallelism(X)] 其中X是可以运行的并行线程数。 / p>