testng.xml с кросс-браузером - PullRequest
0 голосов
/ 21 мая 2018

У меня возникли проблемы с запуском браузеров в Selen Java с использованием testNg с файлом XML.Код, кажется, работает просто отлично, когда нет «driver = new ChromeDriver ();»участвует Я прикрепляю все, что у меня есть до сих пор

Так что она является моим файлом класса

package corssBrowsers;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class VerifyTitle {

WebDriver driver;

@Test(priority=1)
public void sam() {
    System.out.println("Hello sam");
}

@Test(priority = 2)
@Parameters({"browser"})
public void browsers(String browsername) {

    System.out.println(browsername);

    if(browsername.equalsIgnoreCase("chrome")) {
        System.out.println("You have selected " + browsername);

        System.setProperty("webdriver.chrome.driver",
                System.getProperty("user.dir") + "\\Drivers\\Windows\\chromedriver.exe");

        driver = new ChromeDriver();

    }
    else {
        System.out.println("You have not selected chrome");
    }

    driver.manage().window().maximize();
    driver.get("www.yahoo.com");
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

}


}

, а мой файл testng.xml выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="none">



<test name="Test">

<parameter name="browser" value="chrome"/>

<classes>
<class name="corssBrowsers.VerifyTitle"/>
</classes>

</test> <!-- Test -->
</suite> <!-- Suite -->

КогдаЯ запускаю тестовую форму xml, которую продолжаю получать:

[RemoteTestNG] detected TestNG version 6.14.2
Hello sam
chrome
You have selected chrome
Starting ChromeDriver 2.36.540470 (e522d04694c7ebea4ba8821272dbef4f9b818c91) 
on port 13932
Only local connections are allowed.

===============================================
Suite
Total tests run: 2, Failures: 1, Skips: 0
===============================================

, и когда я запускаю форму файла класса, я получаю:

PASSED: sam
FAILED: browsers
org.testng.TestNGException: 
Parameter 'browser' is required by @Test on method browsers but has not been 
marked @Optional or defined

В обоих случаях браузер Chrome не запускаетсяхотя код правильный (работает хорошо в других тестах, которые я сделал).Итак, что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Вы должны добавить значение по умолчанию для параметра browsername, давайте подумаем об этом вместе.Вы добавили параметр в файл xml runner для браузера, и при запуске файла параметр передается в @Test, где вы объявили @Parameters.Теперь, если вы запустите тестовый класс сам, значение не будет передано @Test из xml-файла, потому что ничто не запустило файл, который вам нужно запустить в качестве бегуна TestNG.

Пожалуйста, добавьте значение по умолчанию, подобное этому, в качестве параметра:

@Test(priority = 2)
@Parameters({"browser"})
public void browsers(@Optional("chrome") String browsername){

System.out.println(browsername);

if(browsername.equalsIgnoreCase("chrome")) {
    System.out.println("You have selected " + browsername);

    System.setProperty("webdriver.chrome.driver",
            System.getProperty("user.dir") + "\\Drivers\\Windows\\chromedriver.exe");

    driver = new ChromeDriver();

}
else {
    System.out.println("You have not selected chrome");
}

driver.manage().window().maximize();
driver.get("www.yahoo.com");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

}

Еще одно последнее замечание, попробуйте использовать аннотации TestNG для конфигураций конфигурации.Я предлагаю использовать @BeforClass для создания драйвера.

0 голосов
/ 23 мая 2018

browsers * У метода 1002 * есть параметр, и этот параметр определен в TestNG XML. Так что, если вы запускаете тест на уровне класса, система не получит имя браузера и выдаст ошибку.Вы можете добавить необязательный тег в параметр, если значения не указаны в testng xml или если вы работаете на уровне класса, тогда необязательное значение аннотации будет принято в качестве значения по умолчанию.

Вам нужночтобы изменить код, как показано ниже

public void browsers(@Optional("chrome") String browsername) {

    System.out.println(browsername);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...