代码之家  ›  专栏  ›  技术社区  ›  koushick

在运行跨浏览器测试时遇到问题

  •  0
  • koushick  · 技术社区  · 7 年前

    我在运行跨浏览器时遇到问题,

    问题是它正在打开浏览器,但没有导航到我提供的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 ,它不能正常工作。我已经附上了两份代码文件。

    浏览器设置.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;
        }
    
    
    }
    

    最终测试.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 回复  |  直到 7 年前
        1
  •  1
  •   Walid Ahmed    7 年前

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

    试试看,如果不起作用就告诉我。