登录完成后,我需要验证网页标题。使用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返回登录页面的标题,而不是登录后。 >
答案 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 时,页面标题已在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");
}