Я пишу тесты на основе Java-сервера на основе Java для запуска параллельного кросс-браузера с использованием testng. Я поставил тесты для запуска параллельно на моем файле XML file.The выглядит следующим образом:Объект Webdriver перезаписывается, когда тесты выполняются параллельно.
<suite name="TestSuite" thread-count="2" parallel="tests" >
<test name="ChromeTest">
<parameter name="browser" value="Chrome" />
<classes>
<class name="test.login"/>
<class name="test.main"/>
<class name="test.logout"/>
</classes>
</test>
<test name="FirefoxTest">
<parameter name="browser" value="Firefox" />
<classes>
<class name="test.login"/>
<class name="test.main"/>
<class name="test.logout"/>
</classes>
</test>
Но когда я запустить тест, оба экземпляра браузера получает открыт (Chrome открывает первый и начинается исполнение и после задержки Firefox открывается). В этом случае объект драйвера перезаписывается драйвером Firefox, а chrome останавливает выполнение. Тесты продолжают выполнение в Firefox и успешно завершены.
Структура проекта такова:
- Создано driverbase.class загрузить драйвер, соответствующий браузер, который имеет свой @Beforesuite.
- Crteated отдельные классы для страниц (например: login.class, main.class и т.д.). Который имеет только @Test метод и расширенный класс driverbase получить драйвер.
испытания выполняются suceessfully, когда я установить параллельно ни на XML файл
<suite name="TestSuite" thread-count="2" parallel="none" >
Как я могу решить эту проблему? Как запускать тесты параллельно без этой проблемы?
driverbase класс, как это:
public class driverbase {
\t
\t private String baseUrl;
\t private String nodeUrl;
\t private boolean acceptNextAlert = true;
\t private StringBuffer verificationErrors = new StringBuffer();
\t
\t public static WebDriver driver = null;
\t \t \t \t
\t \t /**
\t \t
\t * This function will execute before each Test tag in testng.xml
\t * @param browser
\t * @throws Exception
\t */
\t \t
\t @BeforeSuite
\t @Parameters("browser")
\t public WebDriver setup(String browser) throws Exception{
\t \t
\t //Check if parameter passed from TestNG is 'firefox'
\t \t \t
\t if(browser.equalsIgnoreCase("firefox")){
\t \t
\t \t System.out.println("Browser : "+browser);
\t \t \t
\t \t FirefoxProfile profile = new FirefoxProfile();
\t \t \t profile.setAcceptUntrustedCertificates(true);
\t \t \t
\t \t \t //create firefox instance
\t \t \t driver = new FirefoxDriver(profile);
\t \t \t \t
\t }
\t
\t //Check if parameter passed as 'chrome'
\t else if(browser.equalsIgnoreCase("chrome")){
\t \t System.out.println("Browser : "+browser);
\t \t \t
\t //set path to chromedriver.exe You may need to download it from http://code.google.com/p/selenium/wiki/ChromeDriver
\t System.setProperty("webdriver.chrome.driver","C:\\chromedriver.exe");
\t ChromeOptions options = new ChromeOptions();
\t options.addArguments("--test-type");
\t
\t \t \t \t //create chrome instance
\t \t
\t \t driver = new ChromeDriver(options);
\t \t
\t }
\t
\t else{
\t //If no browser passed throw exception
\t \t
\t \t System.out.println("Browser is incorrect");
\t throw new Exception("Browser is not correct");
\t }
\t
\t driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
\t driver.manage().window().maximize();
\t \t return driver;
\t
\t }
Спасибо за помощь :)
можете ли вы разместить driverbase.java? – Mona
Добавлен код фрагмента кода драйвера – Sijin
Посмотрите: https://github.com/Ardesco/Selenium-Maven-Template – Ardesco