gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:52:57 28 4
gpt4 key购买 nike

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

最佳答案

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

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

它似乎在您的用例中:

  • 使用 ChromeDriver/Chrome 时,页面标题 已在 document.readyState 时在 DOM Tree 内呈现 等于 complete 已达到。

  • 但是在使用GeckoDriver/Firefox时,页面标题DOM Tree内呈现当达到 document.readyState 等于 complete 时。

解决方案

您需要引发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");
}

关于java - getTitle() 方法在 Chrome 中返回当前页面的标题,但在 Firefox 中使用 Selenium 通过 Java 返回上一页的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55436400/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com