【问题标题】:parallel execution using POM(pagefactory) reupdate使用 POM(pagefactory) 重新更新并行执行
【发布时间】:2020-07-04 07:43:44
【问题描述】:

我无法找到解决方案,所以我在这里发帖寻求帮助。我在并行运行测试时遇到问题(使用 POM 和页面工厂)。

*\ 测试库类 */

  public WebDriver driver;
    @BeforeClass
    @Parameters("Browsername")
        public void initializeaccount(String Browsername) 
        {
           if(Browsername.equals("chrome")) {
                System.setProperty("webdriver.chrome.driver", "C:\\Users\\User\\eclipse-workspace\\test\\chromedriver.exe");
                 driver = new ChromeDriver();   
            }
              else if(Browsername.equals("chrome1")) {
                    System.setProperty("webdriver.chrome.driver", "C:\\Users\\User\\eclipse-workspace\\test\\chromedriver.exe");
                     driver = new ChromeDriver();   
                }
                  driver.manage().window().maximize();
                  driver.manage().deleteAllCookies(); 
                  driver.manage().timeouts().pageLoadTimeout(testutility.page_Load_Timeout, TimeUnit.SECONDS); 
                  driver.manage().timeouts().implicitlyWait(testutility.page_Load_Timeout, TimeUnit.SECONDS); 
                  driver.get(prop.getProperty("accounturl"));   
        }

* POM 类 *

public CreateAccountPage()  {
        PageFactory.initElements(driver, this);
    }
    
    //action 
    public String vailidatewebpagetitle() throws InterruptedException
    {
        return driver.getTitle();
    }

* 测试用例 *

    public Accountpagetest() {
    super(); 
}

@BeforeMethod
public void setup()
{
    
    CreateAccountPage = new CreateAccountPage();    
}
@Test(priority=1)
public void verifycreateaccountwebpagetitle() throws InterruptedException
{
    String title = CreateAccountPage.vailidatewebpagetitle();
    Assert.assertEquals(title, "google");
}

* XML 文件 *

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestSuite" parallel= "tests" thread-count="2">   
<listeners>
        <listener class-name="Report.DownloadReport" />
    </listeners>
 <test name="Testchrome" parallel= "methods" thread-count="5">
 <parameter name="Browsername" value ="chrome"> </parameter>
    <classes>
   <class name="testcases.Accountpagetest"/> 
    </classes>
  </test> <!-- Test -->
<test name="Testchrome2" parallel= "methods" thread-count="5">
 <parameter name="Browsername" value ="chrome1"> </parameter>
    <classes>
   <class name="testcases.Accountpagetest"/> 
</classes>
 </test>
</suite> <!-- Suite -->

我收到 java nullpointerexception 错误

  ===============================================
TestSuite
Total tests run: 2, Passes: 0, Failures: 2, Skips: 0
===============================================

java.lang.NullPointerException
    at pages.CreateAccountPage.vailidatewebpagetitle(CreateAccountPage.java:44)
    at testcases.Accountpagetest.verifycreateaccountwebpagetitle(Accountpagetest.java:37)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:567)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:133)
    at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:584)
    at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:172)
    at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
    at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:804)
    at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:145)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:830)

java.lang.NullPointerException
    at pages.CreateAccountPage.vailidatewebpagetitle(CreateAccountPage.java:44)
    at testcases.Accountpagetest.verifycreateaccountwebpagetitle(Accountpagetest.java:37)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:567)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:133)
    at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:584)
    at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:172)
    at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
    at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:804)
    at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:145)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:830)

** 更新 我遇到的错误,/* POM 类 *\ createnewpage 方法驱动程序返回一个空参数。

无论如何,我在这里尝试的是运行两个 chrome 浏览器进行并行测试。

任何人之前都遇到过这个问题,可以建议需要进行哪些更正?我被困住了。

【问题讨论】:

    标签: java selenium selenium-webdriver pageobjects page-factory


    【解决方案1】:

    将参数“Browsername”读取到方法参数中,并删除读取方法代码中属性的调用

    public WebDriver driver;
    
    @Parameters("Browsername")
        public void initializeaccount(String Browsername) 
        {
            
           if(Browsername.equals("chrome")) {
                System.setProperty("webdriver.chrome.driver", "C:\\Users\\User\\eclipse-workspace\\test\\chromedriver.exe");
                 driver = new ChromeDriver();   
            }
              else if(Browsername.equals("chrome1")) {
                    System.setProperty("webdriver.chrome.driver", "C:\\Users\\User\\eclipse-workspace\\test\\chromedriver.exe");
                     driver = new ChromeDriver();   
                }
                  driver.manage().window().maximize();
                  driver.manage().deleteAllCookies(); 
                  driver.manage().timeouts().pageLoadTimeout(testutility.page_Load_Timeout, TimeUnit.SECONDS); 
                  driver.manage().timeouts().implicitlyWait(testutility.page_Load_Timeout, TimeUnit.SECONDS); 
                  driver.get(prop.getProperty("accounturl"));   
        }
    

    【讨论】:

    • 我通过更新 * 测试用例 */ 和 * 新错误消息 */,testnexception 重新编辑了我的帖子。请忽略之前的 cmets,我已将其删除。
    • 重新更新,我在 testbase 类中添加了@beforeclass 注解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    相关资源
    最近更新 更多