getTitle()方法通过Chrome返回当前页面的标题,但是使用Firefox通过Java使用Firefox返回上一页的标题

时间:2019-03-30 22:58:37

标签: java selenium selenium-chromedriver geckodriver webdriverwait

登录完成后,我需要验证网页标题。使用Chrome驱动器硒化后,登录后的页面标题正确,但不是Firefox驱动程序。其余代码保持不变,只是驱动程序从chrome更改为Firefox。

public void verifyLoginPage()
{
    String homepage= "Guru99 Bank Manager HomePage";

    if (driver.getTitle().equals(homepage))
    {
        System.out.println("Its the correct Homepage after Login");
    }
    else
    {
        System.out.println("Page after login is not the intended one");
    }
}

使用Chrome驱动程序,此代码返回“登录后正确的主页”,使用firefox驱动程序,该代码返回“登录后的页面不是预期的页面”,因为getTitle返回登录页面的标题,而不是登录后。 >

2 个答案:

答案 0 :(得分:1)

能否请您尝试执行以下代码,让我们知道它是否有效。

打开chrome或Firefox驱动程序后,请添加以下代码并查看-

driver.manage().timeouts().implicitlyWait(10
driver.navigate().to("http://sitename.com");
String actualTitle = driver.getTitle();
driver.manage().window().maximize();
String expectedTitle = "page title to be verified";
if(actualTitle.equalsIgnoreCase(expectedTitle))
System.out.println("Title Matched");
else
System.out.println("Title didn't match");
driver.close();
driver.quit();

答案 1 :(得分:1)

不同的浏览器以不同的方式呈现HTML DOM。您可以在Chrome & Firefox on Windows vs Linux (selenium)中找到相关的讨论。在这一点上,值得一提的是:

  • ChromeDriver / Chrome 基于 OSS 方言。
  • GeckoDriver / Firefox 基于 W3C 方言。

在您的用例中似乎是这样:

  • 使用 ChromeDriver / Chrome 时,页面标题已在DOM Tree内在<{达到了strong> document.readyState 等于 complete

  • 但是在使用 GeckoDriver / Firefox 时,页面标题不是呈现在{在达到{strong> document.readyState 等于 complete 时达到{3}}。

解决方案

您需要诱使 WebDriverWait 包含标题,并且可以使用以下解决方案:

public void verifyLoginPage()
{
    new WebDriverWait(driver, 20).until(ExpectedConditions.titleContains("Guru99");
    String homepage= "Guru99 Bank Manager HomePage";
    if (driver.getTitle().equalsIgnoreCase(homepage))
        System.out.println("Its the correct Homepage after Login");
    else
        System.out.println("Page after login is not the intended one");
}