Проблемы при выполнении кросс-браузерного тестирования - PullRequest
0 голосов
/ 14 декабря 2018

Я сталкиваюсь с проблемами во время работы Runnig Cross Browser,

Проблема в том, что он открывает браузер, но не переходит по указанному URL-адресу и запускает тест.

i Have Created Totally 3 Packages ,

1. Browser Configuration (package) - BrowserSetup.java (File)
2.TestCase (Package) - FinalTest.java(file)
3 Test Methods(Package) - List of All Methods for each Single Page(Files)

Моя проблема,если я не импортирую Browsersetup.java в finaltest.java для вызова браузера, он успешно работает и тест пройден.но когда я импортирую BrowserSetup.java внутри finalTest.java, он не работает должным образом, я вложил оба файла кода

BrowserSetup.java

package Browserconfiguration;

import java.io.File;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class Browsersetup 
{
    WebDriver driver;

    public WebDriver setup(String browser) throws Exception
    {
        //Check if parameter passed from TestNG is 'firefox'

        if(browser.equalsIgnoreCase("firefox"))
        {
        //create firefox instance

            System.setProperty("webdriver.gecko.driver", "F:\\New folder\\geckodriver.exe");

            driver = new FirefoxDriver();
        }
        //Check if parameter passed as 'chrome'

        else if(browser.equalsIgnoreCase("chrome"))
        {
                    //set path to chromedriver.exe

        ChromeOptions options = new ChromeOptions();
        options.setAcceptInsecureCerts(true);
        options.setBinary(new File("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"));
        options.addArguments("start-maximized");
        options.addArguments("disable-infobars");
        options.addArguments("--disable-extensions");
        System.setProperty("webdriver.chrome.driver", "F:\\New folder\\chromedriver.exe");

        //create chrome instance

        driver = new ChromeDriver(options);
        }

        //Check if parameter passed as 'Edge'

                else if(browser.equalsIgnoreCase("Edge"))
                {
                    //set path to IE.exe

                    System.setProperty("webdriver.edge.driver","F:\\New folder (2)\\MicrosoftWebDriver (1).exe");
                    //create Edge instance

                    driver = new EdgeDriver();

                }
        else
        {
            //If no browser passed throw exception

            throw new Exception("Browser is not correct");
        }

        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        return driver;
    }


}

FinalTest.java

public class FinalTest {

    WebDriver driver;

    @BeforeTest
    public void beforeTest() throws Exception
    {
        Browsersetup obj = new Browsersetup();
        obj.setup("chrome");

        driver.get("http://xxx.xxxxxxxxxxxx.xxx/");


         List<WebElement> links=driver.findElements(By.tagName("a"));

            System.out.println("Total links are "+links.size());

            for(int i=0;i<links.size();i++)
            {

                WebElement ele= links.get(i);

                String url=ele.getAttribute("href");

                verifyLinkActive(url);


            }



        }

//Finding the broken Links in the website.


private void verifyLinkActive(String linkUrl) {

    try 
    {
       URL url = new URL(linkUrl);

       HttpURLConnection httpURLConnect=(HttpURLConnection)url.openConnection();

       httpURLConnect.setConnectTimeout(3000);

       httpURLConnect.connect();

       if(httpURLConnect.getResponseCode()==200)
       {
           System.out.println(linkUrl+" - "+httpURLConnect.getResponseMessage());
        }
      if(httpURLConnect.getResponseCode()==HttpURLConnection.HTTP_NOT_FOUND)  
       {
           System.out.println(linkUrl+" - "+httpURLConnect.getResponseMessage() + " - "+ HttpURLConnection.HTTP_NOT_FOUND);
        }
    } catch (Exception e) {

    }
}

}

Пожалуйста, уточните, где моя проблема, я не могу ее найти

Ошибка:

java.lang.NullPointerException
    at TestCase.FinalTest.beforeTest(FinalTest.java:46)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
    at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:59)
    at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:455)
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:222)
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:142)
    at org.testng.TestRunner.beforeRun(TestRunner.java:529)
    at org.testng.TestRunner.run(TestRunner.java:497)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
    at org.testng.SuiteRunner.run(SuiteRunner.java:364)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
    at org.testng.TestNG.runSuites(TestNG.java:1049)
    at org.testng.TestNG.run(TestNG.java:1017)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)

1 Ответ

0 голосов
/ 14 декабря 2018

На самом деле в FinalTestClass вы используете другой Webdriver, попробуйте сделать следующее:

Use the driver which is returning from obj.setup("chrome");



public class FinalTest {

WebDriver driver;

@BeforeTest
public void beforeTest() throws Exception
{
    Browsersetup obj = new Browsersetup();
    driver = obj.setup("chrome");

    driver.get("http://xxx.xxxxxxxxxxxx.xxx/");
//...........
}

Просто попробуйте и дайте мне знать, если это не сработало.

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