亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Selenium 和 Java 中使用 @Factory 注釋后無法運行測試

在 Selenium 和 Java 中使用 @Factory 注釋后無法運行測試

慕妹3146593 2022-07-27 16:11:19
這是我的班級的結構:package com.gex.base.helper;public class InitializeDriver extends BrowserFactory {    HashMap<String, String> authenticationMap;    @Factory(dataProvider="authentication", dataProviderClass=DataProviderList.class)    public InitializeDriver(String userName, String uPassword)    {        authenticationMap=new HashMap<String, String>();        authenticationMap.put("UserName", userName);        authenticationMap.put("Password", uPassword);    }    @BeforeTest     public void Gexlogin()       {          LoginPF objLogin=PageFactory.initElements(BrowserFactory.driver, LoginPF.class);           System.out.println("Logging into GEx");           objLogin.loginToDGEx(authenticationMap.get("UserName"), authenticationMap.get("Password"));          System.out.println("Successfully Logged into GEx");    }    @AfterTest    public void directLogout(){        // logout from application        LogoutPF objLogoutTest = PageFactory.initElements(BrowserFactory.driver, LogoutPF.class);        objLogoutTest.LogOffGEx();        extent.flush();        driver.close();    }}LoginToGEx 是另一個類中的函數,例如:public void loginToGEx(String strUsername, String strPassword){    username.sendKeys(strUsername)    password.sendKeys(strPassword);    loginButton.click();    System.out.println("Successfully Logged into GEx");}數據提供者類public class DataProviderList {    @DataProvider(name="authentication")    public static Object[][] authentication()    {        return new Object[][] {            {"abc", "123"},             {"xyz", "456"},            };    }}我的問題是:在將 @Factory 與 dataprovider 一起使用之前——我的測試運行良好,但是當我使用 @Factory 注釋時,什么也沒有發生。在 SampleTest 類中,這個構造函數是自己創建的。這可能是導致問題的原因。public SampleTest(String userName, String uPassword) {            super(userName, uPassword);            // TODO Auto-generated constructor stub        }請指導如何使用@Factory 運行測試如果我用我的@test 場景定義工廠注釋,那么每次我需要登錄時,還有一件事。我有很多測試用例,想在執行所有@test 場景后運行登錄,然后注銷并使用另一組用戶名和密碼重新開始。 .不是每次@test 開始時。這種情況可能嗎?再次感謝
查看完整描述

1 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

它不起作用,因為您使用注釋對構造函數進行了@Factory注釋,然后使用了繼承。


為了保持繼承等,你應該SampleTest用@Factory


像這樣:



public class SampleTest extends InitializeWebDriver {

    private String userName, password;


    @Factory(dataProvider="authentication", dataProviderClass=DataProviderList.class)

    public SampleTest(String userName, String password) {

        super(userName, password)

    }

}



public class InitializeDriver extends BrowserFactory {

    private String userName, password;


    public InitializeDriver(String userName, String uPassword)

    {

        this.userName = userName;

        this.password = password;

    }


}

這將導致@Factory將參數從 DataProvider 傳遞給您的InitializeDriver類并將其保存為實例變量。


然后你可以在你的@BeforeTest方法中使用這些變量:


@BeforeMethod

public void Gexlogin() {

     LoginPF objLogin=PageFactory.initElements(BrowserFactory.driver, LoginPF.class);

     System.out.println("Logging into GEx");

     objLogin.loginToDGEx(userName, password); //changed to instance variables

     System.out.println("Successfully Logged into GEx");

}

編輯:該@BeforeTest方法只會執行一次,因為 TestNG 將@Factory測試視為單個測試用例!如果要在每次測試前登錄,則需要使用@BeforeMethod



查看完整回答
反對 回復 2022-07-27
  • 1 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號