getTitle() 方法 returns 当前页面的标题 Chrome 但前一页的标题 returns 使用 Selenium 通过 Java 的 Firefox
getTitle() method returns title of current page with Chrome but returns title of previous page with Firefox using Selenium through Java
我需要在登录完成后验证网页标题。使用 Chrome Driver 用于 selenium,登录后页面的标题是正确的,但不是 firefox driver。其余代码保持不变,只是 driver 从 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 driver 此代码 returns “它是登录后的正确主页”和使用 firefox driver 此代码 returns “登录后的页面不是预期的”,因为 getTitle returns 登录页面的标题,而不是登录后的标题。
能否请您尝试执行以下代码,让我们知道它是否有效。
打开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();
不同的浏览器呈现 HTML DOM in a different way. You can find a relevant discussion in Chrome & Firefox on Windows vs Linux (selenium)。在这一点上值得一提的是:
- ChromeDriver / Chrome 基于OSS 方言。
- GeckoDriver / Firefox 基于 W3C 方言。
它似乎在你的用例中:
在使用ChromeDriver / Chrome时, 到 document.readyState
等于[=58]时,页面标题已经在 DOM Tree 中呈现=] complete
达到.
但是在使用 GeckoDriver / Firefox 时,Page Title 是 not 在 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");
}
我需要在登录完成后验证网页标题。使用 Chrome Driver 用于 selenium,登录后页面的标题是正确的,但不是 firefox driver。其余代码保持不变,只是 driver 从 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 driver 此代码 returns “它是登录后的正确主页”和使用 firefox driver 此代码 returns “登录后的页面不是预期的”,因为 getTitle returns 登录页面的标题,而不是登录后的标题。
能否请您尝试执行以下代码,让我们知道它是否有效。
打开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();
不同的浏览器呈现 HTML DOM in a different way. You can find a relevant discussion in Chrome & Firefox on Windows vs Linux (selenium)。在这一点上值得一提的是:
- ChromeDriver / Chrome 基于OSS 方言。
- GeckoDriver / Firefox 基于 W3C 方言。
它似乎在你的用例中:
在使用ChromeDriver / Chrome时, 到
document.readyState
等于[=58]时,页面标题已经在 DOM Tree 中呈现=]complete
达到.但是在使用 GeckoDriver / Firefox 时,Page Title 是 not 在 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");
}