Я пытаюсь выполнить тестовые сценарии параллельно.Когда я пытаюсь превысить более 2 тестовых случаев в браузерах (chrome или firefox или оба) на удаленной машине (только для моего локального хоста), выдается следующее исключение.
* Основная база *: открытый класс TestBase {
public ThreadLocal<RemoteWebDriver> tlDriver = new ThreadLocal<RemoteWebDriver>();
public static ExcelTestData dataTable = new ExcelTestData();
public static Properties config = new Properties();
public static FileInputStream fis;
public static RemoteWebDriver driver;
public static BasicFunctions basics = new BasicFunctions();
public static ExtentReports extentReport = ExtentReportManager.getInstance();
public static ExtentTest extentTest;
}
* Функция libraray * открытый класс BasicFunctions extends TestBase {
public void register () {
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(ObjectRepositories.xpath_registerLink)));
driver.findElement(By.xpath(ObjectRepositories.xpath_registerLink)).click();
if(driver.findElement(By.xpath(ObjectRepositories.xpath_registrationTitle)).isDisplayed())
{
driver.findElement(By.xpath(ObjectRepositories.xpath_loginTextbox)).sendKeys(dataTable.getData("RegressionData", "Register_login"));
driver.findElement(By.xpath(ObjectRepositories.xpath_emailTextbox)).sendKeys(dataTable.getData("RegressionData", "Register_email"));
driver.findElement(By.xpath(ObjectRepositories.xpath_reg_passwordTextbox)).sendKeys(dataTable.getData("RegressionData", "Register_password"));
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(ObjectRepositories.xpath_reg_conf_passwordTextbox)));
driver.findElement(By.xpath(ObjectRepositories.xpath_reg_conf_passwordTextbox)).sendKeys(dataTable.getData("RegressionData", "Register_confirmPassword"));
sleep(2000);
try
{
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(ObjectRepositories.xpath_reg_submisson)));
driver.findElement(By.xpath(ObjectRepositories.xpath_reg_submisson)).click();
}
catch(NoSuchElementException nsee)
{
driver.findElement(By.xpath(ObjectRepositories.xpath_reg_passwordTextbox)).click();
}
}
}
публичный синхронизированный void driverInititation (Браузер строк) {
System.out.println("Thread name is "+ Thread.currentThread().getName() + " and Thread ID is "+ Thread.currentThread().getId());
if (ExcelReader.gridExecution.equals("Yes"))
{
if (Browser.equalsIgnoreCase("Firefox"))
{
System.setProperty("webdriver.gecko.driver", System.getProperty("user.dir")+"/src/test/resources/Executables/geckodriver.exe");
DesiredCapabilities cap = DesiredCapabilities.firefox();
try
{
tlDriver.set(new RemoteWebDriver(new URL(config.getProperty("Grid_Url")+":"+config.getProperty("Port_Firefox")+"/wd/hub"),cap));
driver = tlDriver.get();
}
catch(MalformedURLException urlex)
{
urlex.printStackTrace();
}
catch(Exception e)
{
System.out.println("Other exception");
e.printStackTrace();
}
}
else if (Browser.equalsIgnoreCase("Chrome"))
{
System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")+"/src/test/resources/Executables/chromedriver.exe");
DesiredCapabilities cap = DesiredCapabilities.chrome();
try
{
tlDriver.set(new RemoteWebDriver(new URL(config.getProperty("Grid_Url")+":"+config.getProperty("Port_Chrome")+"/wd/hub"),cap));
driver = tlDriver.get();
}
catch(MalformedURLException urlex)
{
urlex.printStackTrace();
}
catch(Exception e)
{
System.out.println("Other exception");
e.printStackTrace();
}
}
}
else
{
if(Browser.equalsIgnoreCase("Firefox"))
{
System.setProperty("webdriver.gecko.driver", System.getProperty("user.dir")+"/src/test/resources/Executables/geckodriver.exe");
driver= new FirefoxDriver();
}
else if(Browser.equalsIgnoreCase("Chrome"))
{
System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")+"/src/test/resources/Executables/chromedriver.exe");
driver= new ChromeDriver();
}
}
if(driver!=null)
{
driver.get(config.getProperty("ApplicationUrl"));
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
wait = new WebDriverWait(driver,30);
javascript = (JavascriptExecutor)driver;
}
}
}
* Мой тестовый набор * открытый класс LoginValidation extends TestBase {
//public WebDriver driver;
@Parameters({"Browser"})
@BeforeTest
public void setupInitiation(String Browser)
{
Thread.currentThread().setName(this.getClass().getSimpleName());
basics.driverInititation(Browser);
}
@Test
public void execution()
{
basics.login();
basics.logout();
}
}
Исключение:
org.openqa.selenium.NoSuchSessionException: недопустимый идентификатор сеанса (информация о драйвере: chromedriver = 2.42.591088 (7b2b2dca23cca0862f674758c5a395) 685)NT 10.0.17134 x86_64) (ПРЕДУПРЕЖДЕНИЕ: сервер не предоставил никакой информации о трассировке стека) Длительность команды или время ожидания: 0 миллисекунд Информация о сборке: версия: '3.14.0', версия: 'aacccce0', время: '2018-08-02T20: 19: 58.91Z 'System информация: хост: 'PRABU', ip: '192.168.92.2', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_40'Информация о драйвере: org.openqa.selenium.remote.RemoteWebDriver Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 2.42.520d2: 2.42.52d2: 2.42.50d2: 2.42.52d2 (0): 0D2D2: 0 ...: C: \ Users \ PRABUN ~ 1 \ AppData \ L ...}, cssSelectorsEnabled: true, databaseEnabled: false, goog: chromeOptions: {debuggerAddress: localhost: 50326}, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true,locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: нормальный, платформа: XP, имя_платформы: XP, способный к повороту: false, setWindowRect: true, takeHeapSnapshot: true, takeScreenshot: true ,ourha:версия: 69.0.3497.100, webStorageEnabled: true, webdriver.remote.sessionid: f24126658364be46f247f15b580 ...} *** Информация об элементе: {Using = xpath, value = // div / a [@href = '# / register']} в sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод) в sun.reflect.selenium.remote.java: 40) at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode (AbstractHttpResponseCodec.java:80) в org.openqa.selenium.remote.http.AbstractHttpResponseCodec.RjponseC44. org)..selenium.remote.HttpCommandExecutor.execute (HttpCommandExecutor.java:158) по адресу org.openqa.selenium.remote.RemoteWebDriver.execute (RemoteWebDriver.java:548) по адресу org.openqa.selenium.remote.RemoteWebDriver.findElement (RemoteWebDriver.java:opena или org.opena org.aq).remote.RemoteWebDriver.findElementByXPath (RemoteWebDriver.java:424) в org.openqa.selenium.By $ ByXPath.findElement (By.java:353) в org.openqa.selenium.remote.RemoteWebDriverjWebDriverjind) в com.servicenow.functionallibraries.BasicFunctions.register (BasicFunctions.java:98) в com.servicenow.testcases.RegistrationFormEntry.execution (RegistrationFormEntry.java:30) в sun.reflect.NativeMethodAccessorImpl.invoke0 (родной).reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) по адресу java.lang.reflect.Method.invoke (Method.java:497) по адресу org.testng.internal.MethodInvocationHelper.inv4org.testng.internal.Invoker.invokeMethod (Invoker.java:580) в org.testng.internal.Invoker.invokeTestMethod (Invoker.java:716) в org.testng.internal.Invoker.invokeTestMethods (Invoker.java:988)в org.testng.internal.TestMethodWorker.invokeTestMethods (TestMethodWorker.java:125) в org.testng.internal.TestMethodWorker.run (TestMethodWorker.java:109) в org.testng.TestRunj.org.testng.TestRunner.run (TestRunner.java:505) в org.testng.SuiteRunner.runTest (SuiteRunner.java:455) в org.testng.SuiteRunner.access $ 000 (SuiteRunner.java:40) в org.testng.SuiteRunner $ SuiteWorker.run (SuiteRunner.java:489) в org.testng.internal.thread.ThreadUtil $ 1.call (ThreadUtil.java:52) в java.util.concurrent.FutureTask.run (FutureTask.java:266) вjava.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) в java.lang.Thread.run (45).