第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

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

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

慕妹3146593 2022-07-27 16:11:19
這是我的班級的結(jié)構(gòu):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 是另一個類中的函數(shù),例如:public void loginToGEx(String strUsername, String strPassword){    username.sendKeys(strUsername)    password.sendKeys(strPassword);    loginButton.click();    System.out.println("Successfully Logged into GEx");}數(shù)據(jù)提供者類public class DataProviderList {    @DataProvider(name="authentication")    public static Object[][] authentication()    {        return new Object[][] {            {"abc", "123"},             {"xyz", "456"},            };    }}我的問題是:在將 @Factory 與 dataprovider 一起使用之前——我的測試運行良好,但是當(dāng)我使用 @Factory 注釋時,什么也沒有發(fā)生。在 SampleTest 類中,這個構(gòu)造函數(shù)是自己創(chuàng)建的。這可能是導(dǎo)致問題的原因。public SampleTest(String userName, String uPassword) {            super(userName, uPassword);            // TODO Auto-generated constructor stub        }請指導(dǎo)如何使用@Factory 運行測試如果我用我的@test 場景定義工廠注釋,那么每次我需要登錄時,還有一件事。我有很多測試用例,想在執(zhí)行所有@test 場景后運行登錄,然后注銷并使用另一組用戶名和密碼重新開始。 .不是每次@test 開始時。這種情況可能嗎?再次感謝
查看完整描述

1 回答

?
慕村225694

TA貢獻(xiàn)1880條經(jīng)驗 獲得超4個贊

它不起作用,因為您使用注釋對構(gòu)造函數(shù)進(jìn)行了@Factory注釋,然后使用了繼承。


為了保持繼承等,你應(yīng)該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;

    }


}

這將導(dǎo)致@Factory將參數(shù)從 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方法只會執(zhí)行一次,因為 TestNG 將@Factory測試視為單個測試用例!如果要在每次測試前登錄,則需要使用@BeforeMethod



查看完整回答
反對 回復(fù) 2022-07-27
  • 1 回答
  • 0 關(guān)注
  • 156 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號