0

使用 JAVA 和 SELENIUM 库:

我有一个使用 FirefoxDriver 的 web automator,到目前为止它工作得非常完美。我的代码如下:

System.out.println("Creating new web driver");
WebDriver driver = new HtmlUnitDriver(BrowserVersion.FIREFOX_3_6);
System.out.println("Parsing CARD OFFICE PAGE\nAccessing webpage");
driver.get(myWebsite);

System.out.println("Setting login credentials");
WebElement id = driver.findElement(By.id("quickloginphrase"));
WebElement pw = driver.findElement(By.id("quickpassword"));

id.sendKeys(username);
pw.sendKeys(password);

System.out.println("Submitting credentials");
System.out.println(driver.getCurrentUrl());
pw.sendKeys(Keys.ENTER);
System.out.println("Credentials submitted");

在我开始使用 HTMLUnitDriver 之前,该程序设法登录到网页,但现在我被重定向到“登录失败”页面。我认为密码或用户名输入不正确。FirefoxDriver 和 HTMLUnitDriver 之间是否存在一些我不知道的细微差别?

4

1 回答 1

0

好吧,您可能在这里遇到以下问题:1)

pw.sendKeys(Keys.ENTER);

输入按钮处理程序未正确处理 2)

id.sendKeys(username);
pw.sendKeys(password);

您正在发送不正确的登录密码可能的解决方案:尝试按下登录按钮而不是按下“输入”键使用

driver.findElement(By.xpath(//....blablabla)).click();

因此,我为您提供了一些用于正确登录和验证成功登录的代码:

public void doAdminLogin() throws IOException {
        String curTitle=driver.getTitle();
        locatorFindingHandling("login.logininput", "login.admin.login");

        locatorFindingHandling("login.passinput", "login.admin.pass");

        locatorFindingHandling("login.loginbutton");
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);


        String newTitle=driver.getTitle();
        Assert.assertFalse(curTitle.equals(newTitle));

    }


public void locatorFindingHandling(String key, String key1) throws IOException {

        driver.findElement(By.xpath(propertyKeysLoader(key))).sendKeys(propertyKeysLoader(key1));

    }

因此,正如我上面提到的,尝试调查解决方法。希望这对你有用)

于 2012-09-17T12:26:25.980 回答