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

getTitle()方法使用Chrome返回当前页面的标题,但使用Selenium通过Java返回Firefox上一页的标题,java,selenium,selenium-chromedriver,geckodriver,webdriverwait,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.printl

我需要验证登录后的网页标题完成。登录后使用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返回登录页面的标题,而不是登录后的标题。

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

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


不同的浏览器以不同的方式渲染。您可以在中找到相关的讨论。在这一点上,值得一提的是:

  • ChromeDriver/Chrome基于OSS方言
  • GeckoDriver/Firefox基于W3C方言
在您的用例中:

  • 使用ChromeDriver/Chrome时,页面标题在
    文档之前已在中呈现。readyState
    等于
    完成

  • 但是当使用GeckoDriver/Firefox时,页面标题在
    文档之前不会在内呈现。readyState
    等于
    完成

解决方案 您需要诱导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");
}

问题是我不能在代码中指定静态url,即driver.navigate()。到(“);”,它应该来自driver.getcurrenturl(),在登录完成后。在铬合金中工作良好。我尝试使用“driver.navigate().to(driver.getCurrentUrl());”添加您的建议,但它同样只在chrome中有效:(Firefox使用driver.getcurrenturl()和driver.getcurrenturl()返回的url与在chrome中获取的url不相同),chrome和firefox中的值都不同。虽然firefox也可以正确登录。但不知何故,无法检索到最新的页面标题。更清楚的是,以下是我所做的操作:1.初始化驱动程序chrome或firefox。2.登录到基本url 3.登录后验证url标题。因此,firefox登录时会出现,但gettitle()或getcurrenturl()会提供上一页的数据。我最初尝试隐式等待20秒,但不起作用。使用您建议的显式等待(20秒),第一次工作,第二次失败。在我增加显式等待40秒后,它在所有运行中的行为都与预期一致。谢谢
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");
}