运行跨浏览器测试时面临的问题

时间:2018-12-14 07:55:27

标签: java selenium selenium-webdriver

Runnig跨浏览器时遇到的问题,

问题是它正在打开浏览器,但没有导航到我提供的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 :(得分:1)

实际上,在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/");
//...........
}

只需尝试一下,让我知道它是否无效。