簡體   English   中英

硒:無法使用數據提供程序識別對象

[英]Selenium : Unable to identify object using data provider

在這個領域的初學者,感謝您在問題上的幫助!

我正在嘗試編寫路徑腳本

登錄創建新用戶退出

登錄方法可以正常工作創建用戶取決於要完成的登錄方法,使用數據提供者和登錄后創建新用戶

問題是登錄后未識別創建用戶類中的元素/對象。 我已經嘗試過使用其他元素查找器和瀏覽器。 感謝您的幫助

項目結構是項目Package1 Logindataprovider.class newaccountDataProvider.class Package2 LoginpageObjects.class NewAccountPageObjects.class Package3 LoginTestscripts.class NewAccountTestScript.class

LoginTestscripts-類

LoginPageObjects LgnObj = new LoginPageObjects();
@Test(groups = { "Logingroup1" }, dataProvider = "LoginCred", dataProviderClass = LoginDataProviders.class)
public void mytest(String DDUname, String DDpwd,String ExpLoginPage, int Browsertype) {

        LgnObj.setBrowser(Browsertype);

        Logger log = Logger.getLogger(LoginDataProviders.class);
        log.info("Login To application method");

        LgnObj.init();

        // Login page assertion actual values
        String LoginPageAssertactual = LgnObj.LoginPageAssertionActual();

        //Login page assertion
        Assert.assertEquals(LoginPageAssertactual, ExpLoginPage);

        //login to application
        LogginCommonProcess(DDUname, DDpwd, LgnObj);

    }

    public void LogginCommonProcess(String DDUname, String DDpwd,
            LoginPageObjects LgnObj) {

        LgnObj.enterUserName(DDUname);
        LgnObj.enterPassword(DDpwd);

        LgnObj.Loginbtn();
        LgnObj.enterPIN();
        LgnObj.CompanyName();

    }

Logindataprovider- Class
public class LoginPageObjects {

    WebDriver driver;

    public void setBrowser(int type) {
        if (type == 1) {
            driver = new FirefoxDriver();
        } else if (type == 2) {
            String path = ClassLoader.getSystemResource("chromedriver.exe")
                    .getPath();
            System.setProperty("webdriver.chrome.driver", path);
            driver = new ChromeDriver();
        } else if (type == 3) {
            String path = ClassLoader.getSystemResource("IEDriverServer.exe")
                    .getPath();
            System.setProperty("webdriver.ie.driver", path);
            driver = new InternetExplorerDriver();
        }
    }

    public void init() {
        driver.manage().window().maximize();
        driver.navigate().to("https://test2.qatest.com/Login.aspx");
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    }

    public String LoginPageAssertionActual() {
        String LoginPageAssertionact = driver.findElement(By.tagName("h1"))
                .getText();
        return LoginPageAssertionact;
    }

    public void enterUserName(String DDUname) {

        driver.findElement(By.id("ctl00_MainContent_usernameField")).sendKeys(
                DDUname);
    }

    public void enterPassword(String DDpwd) {
        driver.findElement(By.id("ctl00_MainContent_passwordField")).sendKeys(
                DDpwd);
    }

New User- page object
public class NewUser {

    WebDriver driver;

    public void setup() {
        System.out.println("Start here");
        System.setProperty("webdriver.ie.driver", "C:\\IEDriverServer.exe");
        driver = new InternetExplorerDriver();
        driver.manage().window().maximize();

        driver.navigate().to("https://test2.directorsdesk.com/Login.aspx");

        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    }

    public void setBrowser(int type) {
        if (type == 1) {
            driver = new FirefoxDriver();
        } else if (type == 2) {
            String path = ClassLoader.getSystemResource("chromedriver.exe")
                    .getPath();
            System.setProperty("webdriver.chrome.driver", path);
            driver = new ChromeDriver();
        } else if (type == 3) {
            String path = ClassLoader.getSystemResource("IEDriverServer.exe")
                    .getPath();
            System.setProperty("webdriver.ie.driver", path);
            driver = new InternetExplorerDriver();
        } else if (type == 4) {
            DesiredCapabilities cap = DesiredCapabilities.chrome();
            cap.setBrowserName("chrome");
            cap.setVersion("38");
            cap.setPlatform(Platform.WINDOWS);
            try {
                driver = new RemoteWebDriver(new URL(
                        "http://127.0.0.1:4444/wd/hub"), cap);
            } catch (MalformedURLException e) {
                // log erro unable to access remote system, running in local
                // firefox
                driver = new FirefoxDriver();

            }
        }
    }

    **public void ManageSystem() {
        driver.findElement(By.partialLinkText("Manage System")).click();
        driver.findElement(By.linkText("Manage System")).click();

    }**

public class NewAccount {

    @Test(dataProvider = "UserDetails", dataProviderClass = LoginDataProviders.class, dependsOnGroups = "Logingroup1")
    public void CreateNewAccount(String Emailid, String Firstname,
            String Lastname, String PrimaryEmailid, int browserType) {

        NewUser NewUserObj = new NewUser();
        NewUserObj.setBrowser(browserType);
        **NewUserObj.ManageSystem();** // Fails here
        NewUserObj.UserAccounts();
        NewUserObj.NewUserAccount();
        NewUserObj.Emailid(Emailid);
        NewUserObj.UserFirstname(Firstname);
        NewUserObj.UserLastname(Lastname);
        NewUserObj.PrimaryEmai(PrimaryEmailid);
        NewUserObj.SaveAccountSettings();

        LoginPageObjects LgnPgObj = new LoginPageObjects();
        LgnPgObj.Logout();
        LgnPgObj.closeBrowser();

    }

您是否嘗試過:

public void entityFieldIsEntered(String field, String value)  {
    WebElement valueElem = new SharedDriver().findElement(By.xpath("(.//*[text()='" + field
            + ":'])[2]/parent::*/span/input"));
    valueElem.sendKeys(new CharSequence[] { value });

}

假設您在html中使用輸入包裝器。 此代碼在屏幕上搜索文本標簽,然后轉到其父級並導航到輸入字段。

如果要在一個測試中使用多個頁面對象,則需要在這些頁面對象之間共享相同的驅動程序。 嘗試創建一個單獨的setupDriver類,並讓每個頁面對象采用要構造的驅動程序參數。 在每個測試設置的開始,驅動程序,然后在創建每個對象時傳入驅動程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM