0

Я хочу запустить те же тесты в разных браузерах (Firefox, Chrome и Safari). Для этого я использую параметризацию в тестах. Где в браузере хромированный хром и т. Д.Selenium: Запустите те же тесты в разных браузерах

И в testng.xml Я указал, что для параллельного тестирования и повторения одного теста я использовал несколько тегов <test>.

Что делать, если у меня так много тестов для запуска. Я буду копировать те же теги в тегах <test>. Который не видит оптимального решения.

Как это исправить?

Вот что я пробовал:

public class SameTestDifferentBrowsers { 

WebDriver driver; 

@BeforeMethod 
@Parameters("browser") 
public void openBroswer(String browser) { 

    if (browser.equalsIgnoreCase("Chrome")) { 
     System.out.println(System.getProperty("user.dir")); 
     System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")+"//lib//browsers//chromedriverMac"); 

     driver = new ChromeDriver(); 

    } else if (browser.equalsIgnoreCase("Firefox")) { 
     driver = new FirefoxDriver(); 
    } else if (browser.equalsIgnoreCase("safari")) { 
     System.setProperty("webdriver.safari.driver", System.getProperty("user.dir")+"//lib//browsers//SafariDriver.safariextz"); 
     driver = new SafariDriver(); 
    } 
} 

@AfterMethod 
public void closeBrowser() { 
    driver.quit(); 
} 

@Test 
public void login_TestCase() { 
    driver.get("https://www.google.com"); 

} 
} 

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="Parallel test suite" parallel="tests"> 
    <test name="Firefox Test"> 
    <parameter name="browser" value="browser"/> 
    <classes> 
     <class name="ParallelBrowser.SameTestDifferentBrowsers"/> 
    </classes> 
    </test> 
    <test name="Chrome Test"> 
    <parameter name="browser" value="browser"/> 
    <classes> 
     <class name="ParallelBrowser.SameTestDifferentBrowsers"/> 
    </classes> 
    </test> 
    <test name="Safari Test"> 
    <parameter name="browser" value="browser"/> 
    <classes> 
     <class name="ParallelBrowser.SameTestDifferentBrowsers"/> 
    </classes> 
    </test> 
</suite> 
+0

@niharika_neo вы можете решить этот вопрос? – paul

ответ

0

Если вы уверены, что вы хотели бы, чтобы запустить все тесты для всех трех браузеров, то вы можете изменить дизайн немного.

Создайте несколько тестовых классов для разных тестовых случаев. В вашем xmltest tags передать различные имена классов тестов в качестве параметров.

Напишите три метода @test в параметризованном тестовом классе каждый для каждого браузера, который принимает имя класса в качестве параметра. Теперь, используя Reflections, вы можете вызвать правильный метод тестирования в каждом методе @test.

+0

Не могли бы вы привести пример? – paul

+0

Также я думаю, что это не решение, потому что я бы тестировал каждый тест в трех браузерах. И если я хочу, то зачем мне жестко кодировать его в коде. – paul

0

Здесь необходимо устранить две проблемы и решить проблему.

Первый: Обновление файла TestNG.xml включать имена браузера

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="Parallel test suite" parallel="tests"> 
<test name="Firefox Test"> 
    <parameter name="browser" value="Firefox" /> 
    <classes> 
     <class name="ParallelBrowser.SameTestDifferentBrowsers" /> 
    </classes> 
</test> 
<test name="Chrome Test"> 
    <parameter name="browser" value="Chrome" /> 
    <classes> 
     <class name="ParallelBrowser.SameTestDifferentBrowsers" /> 
    </classes> 
</test> 
<test name="Safari Test"> 
    <parameter name="browser" value="safari" /> 
    <classes> 
     <class name="ParallelBrowser.SameTestDifferentBrowsers" /> 
    </classes> 
</test> 

Второй: расширение браузера Safari должен быть установлен и включен в браузере и не должно быть хранится на пути.

Так просто комментарий Следующая строка из кода Java Файл

//System.setProperty("webdriver.safari.driver",  
     //System.getProperty("user.dir") + "/lib/browsers/SafariDriver.safariextz");