driver.getTitle()不返回页面标题。它返回null。我在网页上有以下html结构:
<head>
<!-- needed for translation of titles -->
<!-- needed for gomez.jsp -->
<script type="text/javascript" async="" src="https://ssl.google-analytics.com/ga.js"> </script><script type="text/javascript"> … </script><script src="https://B001E0.t.axf8.net/js/gtag5.js" type="text/javascript"></script>
<title>
Applications
</title>
so on....
有人可以解释这里的问题吗?提前致谢
答案 0 :(得分:1)
然后你可能想要明确等待如下:
void waitForLoad(WebDriver driver) { ExpectedCondition pageLoads = new ExpectedCondition() { public Boolean apply(WebDriver driver) { return (Boolean)((JavascriptExecutor)driver).executeScript("return document.readyState").equals("complete"); } }; WebDriverWait wait = new WebDriverWait(driver, 30); wait.until(pageLoads); }
然后你可以执行以下操作:
driver.getTitle()
答案 1 :(得分:1)
我认为你可能会迟到但我只是把它放在其他人可以得到帮助的地方。 第一个蹩脚的方法是你可以添加
Thread.sleep(2000);
//(2000 is the time in milliseconds) before the the
driver.getTitle();
你可以给你想要的时间,它会做的只是减慢你的执行时间2秒(在这种情况下)
2你可以使用 的 的
的WebDriverWait wait = new WebD`enter code here`riverWait(driver, 10);
wait.until(ExpectedConditions.jsReturnsValue("complete"));
driver.getTitle();
的 它只有在HTML和JS返回文本完成时才有效 现在您将获得新页面标题,您可以将其用于验证。
向线程添加一个代码:
WebDriverWait wait = new WebDriverWait(driver, 30);
try{
wait.until(ExpectedConditions.titleIs(eTitle));
Reporter.log("PASS: Title is matching.", true);
}