Selenium driver.getTitle()不起作用

时间:2013-09-05 08:29:01

标签: webdriver selenium-webdriver

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....

有人可以解释这里的问题吗?提前致谢

2 个答案:

答案 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);
        }