【问题标题】:NullPointerException @FindBy in PageObjectModel using ChromeDriver and Chrome through SeleniumNullPointerException @FindBy 在 PageObjectModel 中使用 ChromeDriver 和 Chrome 通过 Selenium
【发布时间】:2020-09-10 17:46:41
【问题描述】:

我正在尝试在 Selenium 中实现 PageObjectModel。但我在@FindBy 得到 NullPointer 异常。我希望有人能帮助我找出我的错误。我创建了设置 config.properties 文件(它包含 url、驱动程序参数)以及设置驱动程序的基类。 HomePage 具有对象存储库以及操作,并且 PageFactory 已初始化。 HomePageTest 有所有的测试。当我运行代码时,网站已成功启动。第一个测试成功执行。但在第二次测试中,它在 FindBy 上失败了。

这是我的代码供参考。

以下是我的基类:

package com.seleniumEasy.qa.base;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;

import com.seleniumEasy.qa.commonUtility.*;

public class Base {

    public static WebDriver driver;
    public static Properties prop;
    
    @BeforeClass
    public void setBaseline()
    {
        try {
            setProperties("\\Devp\\SeleniumEasy_Maven_POM_DataDrivenProject\\src\\main\\java\\com\\seleniumEasy\\qa\\config\\config.properties");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        

        //setProperties("\\Devp\\SeleniumEasy_Maven_POM_DataDrivenProject\\src\\main\\java\\com\\seleniumEasy\\qa\\config\\config.properties");
        setDriver();
    }
    /*@AfterClass
    public void tearDown()
    {
        driver.quit();
    }*/
    
    public static void setProperties(String sFilePath) throws IOException
    {
        prop = new Properties();
        FileInputStream fip = new FileInputStream(sFilePath);
        prop.load(fip);
    }
    
    public static void setDriver()
    {
        switch(prop.getProperty("browser").toLowerCase())
        {
            case "chrome":
                System.setProperty(prop.getProperty("chromekey"),prop.getProperty("chromedriverpath"));
                driver = new ChromeDriver();
                break;
            case "firefox":
                System.setProperty(prop.getProperty("firefoxkey"), prop.getProperty("firefoxdriverpath"));
                driver = new FirefoxDriver();
                break;
            case "ie":
                System.setProperty(prop.getProperty("iekey"),prop.getProperty("iedriverpath"));
                driver = new InternetExplorerDriver();
                break;
            case "edge":
                System.setProperty(prop.getProperty("edgekey"), prop.getProperty("edgedriverpath"));
                driver = new EdgeDriver();
                break;
            default:
                System.out.println("Driver does not exists: "+ prop.getProperty("browser"));
        }
        driver.manage().timeouts().implicitlyWait(commonUtil.Implicit_Wait, TimeUnit.SECONDS);
        //driver.manage().timeouts().pageLoadTimeout(commonUtil.PageLoad_Wait,TimeUnit.SECONDS);
        driver.get(prop.getProperty("url"));
        //driver.manage().window().maximize();
        if(driver.findElement(By.partialLinkText("No, thanks!")).isDisplayed())
            driver.findElement(By.partialLinkText("No, thanks!")).click();
    
    }
}

以下是我的页面文件

package com.seleniumEasy.qa.pages;

import java.util.ArrayList;
import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;

import com.seleniumEasy.qa.base.Base;

public class HomePage extends Base {
    
    @FindBy(xpath="//*[@id=\"navbar-brand-centered\"]/ul[1]/li[1]/a")
    WebElement InputForm;
    
    @FindBy(css="#navbar-brand-centered > ul:nth-child(1) > li.dropdown.open")
    List<WebElement> InputFormLst;
    
    @FindBy(css="ul.nav.navbar-nav>li.dropdown.open>ul.dropdown-menu>li:first-of-type")
    WebElement simpleFormDemo;
    
    @FindBy(css="ul.nav.navbar-nav>li.dropdown.open>ul.dropdown-menu>li:nth-child(2)")
    WebElement checkBoxDemo;
    
    @FindBy(css="ul.nav.navbar-nav>li.dropdown.open>ul.dropdown-menu>li:nth-child(3)")
    WebElement radioBtnDemo;
    
    @FindBy(css="ul.nav.navbar-nav>li.dropdown.open>ul.dropdown-menu>li:nth-child(4)")
    WebElement dropDownLstDemo;
    
    @FindBy(css="ul.nav.navbar-nav>li.dropdown.open>ul.dropdown-menu>li:nth-child(5)")
    WebElement inputFrmSubmit;
    
    @FindBy(css="ul.nav.navbar-nav>li.dropdown.open>ul.dropdown-menu>li:nth-child(6)")
    WebElement ajaxForm;
    
    @FindBy(css="ul.nav.navbar-nav>li.dropdown.open>ul.dropdown-menu>li:nth-child(6)")
    WebElement jQuerySelect;
    
    List<WebElement> inputFormList = new ArrayList();
    
            
    public HomePage()
    {
        PageFactory.initElements(driver, this);     
    }
    
    public String validateTitle()
    {
        return driver.getTitle();
    }
    public SimpleForm validateSimpleFormDemo()
    {
        InputForm.click();
        //driver.findElement(By.cssSelector("div.navbar-collapse.collapse.in>ul.nav.navbar-nav>li.dropdown.open>a")).click();
        //driver.findElement(By.xpath("//*[@id=\"navbar-brand-centered\"]/ul[1]/li[1]/a")).click();
        simpleFormDemo.click();
        return new SimpleForm();
    }
    
}

下面是我的测试页

package com.seleniumEasy.qa.Test;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;

import com.seleniumEasy.qa.base.Base;
import com.seleniumEasy.qa.pages.HomePage;
import com.seleniumEasy.qa.pages.SimpleForm;

public class HomePageTest extends Base {

    HomePage homePage;
    SoftAssert softAssert;
    public HomePageTest()
    {
        homePage = new HomePage();
        softAssert = new SoftAssert();
    }
    
    
    @Test(priority=1)
    public void validateLoginPage()
    {
        String sTitle = homePage.validateTitle();
        softAssert.assertEquals(sTitle, "Selenium Easy Demo");
    }
    @Test(priority=1)
    public void validateSimpleForm()
    {
        SimpleForm simpleForm = homePage.validateSimpleFormDemo();
        
    }
    
}

这里是堆栈跟踪

 Starting ChromeDriver 2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e) on port 32000
Only local connections are allowed.
[1599758981.703][WARNING]: Timed out connecting to Chrome, retrying...
Sep 10, 2020 10:59:43 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
[Utils] Attempting to create C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\Default suite\Default test.xml
[Utils]   Directory C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\Default suite exists: true
FAILED: validateSimpleForm
java.lang.NullPointerException
    at org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocator.java:69)
    at org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:38)
    at com.sun.proxy.$Proxy8.click(Unknown Source)
    at com.seleniumEasy.qa.pages.HomePage.validateSimpleFormDemo(HomePage.java:66)
    at com.seleniumEasy.qa.Test.HomePageTest.validateSimpleForm(HomePageTest.java:39)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:100)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:646)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:811)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1129)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
    at org.testng.TestRunner.privateRun(TestRunner.java:746)
    at org.testng.TestRunner.run(TestRunner.java:600)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:366)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:361)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:319)
    at org.testng.SuiteRunner.run(SuiteRunner.java:268)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1264)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1189)
    at org.testng.TestNG.runSuites(TestNG.java:1104)
    at org.testng.TestNG.run(TestNG.java:1076)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:152)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:57)


===============================================
    Default test
    Tests run: 1, Failures: 1, Skips: 0
===============================================


===============================================
Default suite
Total tests run: 1, Failures: 1, Skips: 0
===============================================

[TestNG] Time taken by org.testng.reporters.EmailableReporter2@42d3bd8b: 8 ms
[Utils] Attempting to create C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\testng-failed.xml
[Utils]   Directory C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output exists: true
[Utils] Attempting to create C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\Default suite\testng-failed.xml
[Utils]   Directory C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\Default suite exists: true
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 9 ms
[Utils] Attempting to create C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\old\Default suite\toc.html
[Utils]   Directory C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\old\Default suite exists: true
[Utils] Attempting to create C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\old\Default suite\Default test.properties
[Utils]   Directory C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\old\Default suite exists: true
[Utils] Attempting to create C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\old\Default suite\index.html
[Utils]   Directory C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\old\Default suite exists: true
[Utils] Attempting to create C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\old\Default suite\main.html
[Utils]   Directory C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\old\Default suite exists: true
[Utils] Attempting to create C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\old\Default suite\groups.html
[Utils]   Directory C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\old\Default suite exists: true
[Utils] Attempting to create C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\old\Default suite\classes.html
[Utils]   Directory C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\old\Default suite exists: true
[Utils] Attempting to create C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\old\Default suite\reporter-output.html
[Utils]   Directory C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\old\Default suite exists: true
[Utils] Attempting to create C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\old\Default suite\methods-not-run.html
[Utils]   Directory C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\old\Default suite exists: true
[Utils] Attempting to create C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\old\Default suite\testng.xml.html
[Utils]   Directory C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\old\Default suite exists: true
[Utils] Attempting to create C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\old\index.html
[Utils]   Directory C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\old exists: true
[TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@6cd8737: 41 ms
[TestNG] Time taken by org.testng.reporters.jq.Main@6aaa5eb0: 46 ms
[Utils] Attempting to create C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\junitreports\TEST-com.seleniumEasy.qa.Test.HomePageTest.xml
[Utils]   Directory C:\Arundhati\Devp\SeleniumEasy_Maven_POM_DataDrivenProject\test-output\junitreports exists: true
[TestNG] Time taken by org.testng.reporters.JUnitReportReporter@3b81a1bc: 6 ms
[TestNG] Time taken by org.testng.reporters.XMLReporter@6b2fad11: 12 ms

这是日食视图

【问题讨论】:

    标签: java selenium google-chrome selenium-chromedriver findby


    【解决方案1】:

    此错误消息...

    Starting ChromeDriver 2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e) on port 32000
    Only local connections are allowed.
    [1599758981.703][WARNING]: Timed out connecting to Chrome, retrying...
    Sep 10, 2020 10:59:43 PM org.openqa.selenium.remote.ProtocolHandshake createSession
    INFO: Detected dialect: OSS
    

    ...暗示 ChromeDriver 无法启动/生成新的浏览上下文,即 Chrome 浏览器 会话。

    您的主要问题是您使用的二进制文件版本之间的不兼容性,如下所示:

    • 您正在使用 chromedriver=2.41
    • chromedriver=2.41 的发行说明明确提及以下内容:

    支持 Chrome v67-69

    • 可能您使用的是最新的 chrome=85.0
    • ChromeDriver v85.0 的发行说明明确提及以下内容:

    支持Chrome 85版

    所以 ChromeDriver v2.41Chrome 浏览器 v85.0

    之间存在明显的不匹配

    解决方案

    确保:

    • JDK 升级到当前级别JDK 8u252
    • Selenium 升级到当前发布的Version 3.141.59
    • ChromeDriver 已更新到当前的ChromeDriver v84.0 级别。
    • Chrome 已更新到当前的 Chrome 版本 85.0 级别。 (根据ChromeDriver v85.0 release notes
    • 如果您的基本 Web 客户端 版本太旧,请卸载它并安装最新的 GA 和发布版本的 Web 客户端
    • 清理你的项目工作区通过你的IDE重建你的项目只需要依赖。
    • 进行系统重启
    • 非root用户身份执行@Test
    • 始终在 tearDown(){} 方法中调用 driver.quit() 以优雅地关闭和销毁 WebDriverWeb Client 实例。

    【讨论】:

    • 感谢您的详细回复。我采纳了你的所有建议。但同样的问题仍然存在。我仍然得到 NullPointerException
    • 如果我使用 driver.findElement() 那么代码工作得很好。很明显,问题出在我正在使用的 PageFactory 和 @FindBy 上。以下代码有效
    • public SimpleForm validateSimpleFormDemo() { driver.findElement(By.xpath("//*[@id=\"navbar-brand-centered\"]/ul[1]/li[1] /a")).click(); //InputForm.click(); simpleFormDemo.click();返回新的 SimpleForm(); }
    • 谁能帮忙解决这个问题?我还是卡住了。
    • 谁能帮我解决这个问题?我仍然坚持这一点。
    【解决方案2】:

    我终于找到了解决我自己问题的方法。当初始化 PageFactory 时驱动程序对象为 null 时,将引发 NullPointerException。 问题是在初始化驱动程序对象之前,我正在调用 PageFactory Initialization 方法。这就是为什么在构造函数中的 HomePage.java 页面上,驱动程序为空。 这是更新的代码。 这是我的基础课。我正在通过基类构造函数初始化 cofig.properties 文件。

        /**
     * 
     */
    package com.seleniumEasy.qa.base;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.util.Properties;
    import java.util.concurrent.TimeUnit;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.edge.EdgeDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.ie.InternetExplorerDriver;
    import org.testng.annotations.BeforeClass;
    import org.testng.annotations.BeforeMethod;
    
    import com.seleniumEasy.qa.commonUtility.*;
    
    public class Base {
    
        public static WebDriver driver;
        public static Properties prop;
        
        
        public WebDriver getDriver()
        {
            return driver;
        }
        public Base()
        {
            try 
            {
                setProperties("\\Arundhati\\Devp\\SeleniumEasy_Maven_POM_DataDrivenProject\\src\\main\\java\\com\\seleniumEasy\\qa\\config\\config.properties");
            } catch (IOException e) 
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }
        
        /*@AfterClass
        public void tearDown()
        {
            driver.quit();
        }*/
        
        public static void setProperties(String sFilePath) throws IOException
        {
            prop = new Properties();
            FileInputStream fip = new FileInputStream(sFilePath);
            prop.load(fip);
        }
        
        public static void setDriver()
        {
            
            if(prop.getProperty("browser").toLowerCase().equals("chrome"))
            {
                System.setProperty(prop.getProperty("chromekey"),prop.getProperty("chromedriverpath"));
                driver = new ChromeDriver();
            }
            else if(prop.getProperty("browser").toLowerCase().equals("firefox"))
            {
                    System.setProperty(prop.getProperty("firefoxkey"), prop.getProperty("firefoxdriverpath"));
                    driver = new FirefoxDriver();
            }
            else if(prop.getProperty("browser").toLowerCase().equals("ie"))
            {
                System.setProperty(prop.getProperty("iekey"),prop.getProperty("iedriverpath"));
                driver = new InternetExplorerDriver();
            }
            else if(prop.getProperty("browser").toLowerCase().equals("edge"))
            {
                System.setProperty(prop.getProperty("edgekey"), prop.getProperty("edgedriverpath"));
                driver = new EdgeDriver();
            }
            else
            {
                System.out.println("Driver does not exists: "+ prop.getProperty("browser"));
            }
            driver.manage().timeouts().implicitlyWait(commonUtil.Implicit_Wait, TimeUnit.SECONDS);
            //driver.manage().timeouts().pageLoadTimeout(commonUtil.PageLoad_Wait,TimeUnit.SECONDS);
            driver.get(prop.getProperty("url"));
            //driver.manage().window().maximize();
            if(driver.findElement(By.partialLinkText("No, thanks!")).isDisplayed())
                driver.findElement(By.partialLinkText("No, thanks!")).click();
    
                
        }
        
        public String getProperty(String key)
        {
            return prop.getProperty(key);
        }
    }
    
    Following is code for my HomePage.java. No change in this file.
    
        /**
         * 
         */
        package com.seleniumEasy.qa.pages;
        
        import java.util.List;
        
        import org.openqa.selenium.By;
        import org.openqa.selenium.WebElement;
        import org.openqa.selenium.support.FindBy;
        import org.openqa.selenium.support.PageFactory;
        
        import com.seleniumEasy.qa.base.Base;
        
        public class HomePage extends Base {
            
            @FindBy(xpath="//*[@id=\"navbar-brand-centered\"]/ul[1]/li[1]/a")
            WebElement InputForm;
            
            @FindBy(css="#navbar-brand-centered > ul:nth-child(1) > li.dropdown.open")
            List<WebElement> InputFormLst;
            
            @FindBy(css="ul.nav.navbar-nav>li.dropdown.open>ul.dropdown-menu>li:first-of-type")
            WebElement simpleFormDemo;
            
            @FindBy(css="ul.nav.navbar-nav>li.dropdown.open>ul.dropdown-menu>li:nth-child(2)")
            WebElement checkBoxDemo;
            
            @FindBy(css="ul.nav.navbar-nav>li.dropdown.open>ul.dropdown-menu>li:nth-child(3)")
            WebElement radioBtnDemo;
            
            @FindBy(css="ul.nav.navbar-nav>li.dropdown.open>ul.dropdown-menu>li:nth-child(4)")
            WebElement dropDownLstDemo;
            
            @FindBy(css="ul.nav.navbar-nav>li.dropdown.open>ul.dropdown-menu>li:nth-child(5)")
            WebElement inputFrmSubmit;
            
            @FindBy(css="ul.nav.navbar-nav>li.dropdown.open>ul.dropdown-menu>li:nth-child(6)")
            WebElement ajaxForm;
            
            @FindBy(css="ul.nav.navbar-nav>li.dropdown.open>ul.dropdown-menu>li:nth-child(6)")
            WebElement jQuerySelect;
            
            //List<WebElement> inputFormList = new ArrayList();
            
            
            public HomePage()
            {       
                PageFactory.initElements(driver, this);     
            }
            
            public String validateTitle()
            {
                return driver.getTitle();
            }
            public SimpleForm validateSimpleFormDemo()
            {
                
                InputForm.click();
                simpleFormDemo.click();
                return new SimpleForm();
            }
            
        }
    
    Here is my HomePageTest file. I am calling the driver setup method following by creating the HomePage object in the BeforeClass annotation. No constructor in this class.
    
    //package com.seleniumEasy.qa.testdata;
    package com.seleniumEasy.qa.Test;
    import org.openqa.selenium.support.PageFactory;
    import org.testng.annotations.AfterClass;
    import org.testng.annotations.AfterMethod;
    import org.testng.annotations.BeforeClass;
    import org.testng.annotations.BeforeMethod;
    import org.testng.annotations.BeforeSuite;
    import org.testng.annotations.Test;
    import org.testng.asserts.SoftAssert;
    
    import com.seleniumEasy.qa.base.Base;
    import com.seleniumEasy.qa.pages.HomePage;
    import com.seleniumEasy.qa.pages.SimpleForm;
    
    public class HomePageTest extends Base {
    
        
        HomePage homePage;
        SoftAssert softAssert;
        
        @BeforeClass
        public void setUp()
        {
            setDriver();
            homePage = new HomePage();
            //PageFactory.initElements(driver, HomePage.class); 
            softAssert = new SoftAssert();
            
        }
        /*@AfterClass
        public void tearDown()
        {
            driver.quit();
        }*/
        @Test(priority='b')
        public void validateLoginPage()
        {
            String sTitle = homePage.validateTitle();
            softAssert.assertEquals(sTitle, "Selenium Easy Demo");
        }
        
        @Test(priority='a')
        public void validateSimpleForm()
        {
            SimpleForm simpleForm = homePage.validateSimpleFormDemo();
        }
        
    }
    

    【讨论】:

      猜你喜欢
      • 2020-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 1970-01-01
      • 2019-05-05
      • 1970-01-01
      相关资源
      最近更新 更多