簡體   English   中英

硒用戶名密碼錯誤

[英]Selenium Username Password Code Error

我正在編寫一個將用戶名和密碼輸入URL並提交該頁面的代碼。 但我不斷收到這個錯誤

 "Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: 
  Unable to locate element: {"method":"name","selector":"username"}"

下面是代碼

package org.openqa.selenium.example;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class LoginPage {
    private final WebDriver driver;

    public LoginPage(WebDriver driver) {
        this.driver = driver;

        // Check that we're on the right page.
        if (!"Outreach Configuration".equals(driver.getTitle())) {
            // Alternatively, we could navigate to the login page, perhaps logging out first
            throw new IllegalStateException("This is not the login page");
        }
    }

    // The login page contains several HTML elements that will be represented as WebElements.
    // The locators for these elements should only be defined once.

    //    By usernameLocator = By.name("username");
    //    By passwordLocator = By.name("password");
     //   By loginButtonLocator = By.name("submit");

    // The login page allows the user to type their username into the username field
    public LoginPage typeUsername(String username) {
        // This is the only place that "knows" how to enter a username
        driver.findElement(By.name("username")).sendKeys(username);

        // Return the current page object as this action doesn't navigate to a page represented by another PageObject
        return this;    
    }

    // The login page allows the user to type their password into the password field
    public LoginPage typePassword(String password) {
        // This is the only place that "knows" how to enter a password
        //driver.findElement(passwordLocator).sendKeys(password);
        driver.findElement(By.name("password")).sendKeys(password);
        // Return the current page object as this action doesn't navigate to a page represented by another PageObject
        return this;    
    }

    // The login page allows the user to submit the login form
    public HomePage submitLogin() {
        // This is the only place that submits the login form and expects the destination to be the home page.
        // A seperate method should be created for the instance of clicking login whilst expecting a login failure. 
  //      driver.findElement(By.name("submit")).submit();

        // Return a new page object representing the destination. Should the login page ever
        // go somewhere else (for example, a legal disclaimer) then changing the method signature
        // for this method will mean that all tests that rely on this behaviour won't compile.
        return new HomePage(driver);    
    }

    // The login page allows the user to submit the login form knowing that an invalid username and / or password were entered
    public LoginPage submitLoginExpectingFailure() {
        // This is the only place that submits the login form and expects the destination to be the login page due to login failure.
    //    driver.findElement(By.name("submit")).submit();

        // Return a new page object representing the destination. Should the user ever be navigated to the home page after submiting a login with credentials 
        // expected to fail login, the script will fail when it attempts to instantiate the LoginPage PageObject.
        return new LoginPage(driver);   
    }

    // Conceptually, the login page offers the user the service of being able to "log into"
    // the application using a user name and password. 
    public HomePage loginAs(String username, String password) {
        // The PageObject methods that enter username, password & submit login have already defined and should not be repeated here.
        typeUsername(username);
        typePassword(password);
        return submitLogin();
    }
    public static void main(String[] args) {
        WebDriver driver = new FirefoxDriver();

        // And now use this to visit Google
        driver.get("URL Goes Here");
        LoginPage login = new LoginPage(driver);
        HomePage a=login.loginAs("username","Password");


    }
} 

我從http://code.google.com/p/selenium/wiki/PageObjects引用了它

嘗試添加

try {
    Thread.sleep(5000);
} catch (InterruptedException e) {
    e.printStackTrace();
}

HomePage a=login.loginAs("username","Password");之前HomePage a=login.loginAs("username","Password");

這不是一個很好的方法,但是它將有助於找出問題所在。 這只是下一步之前的暫停。 將來您不應該使用它,因為它不是很好的做法。 這是更好地使用wait for condition檢查出更多的信息。

暫無
暫無

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

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