如何通过xpath获得标题?

时间:2013-08-30 18:30:35

标签: java xpath selenium

有没有办法通过xpath而不是driver.getTitle()

来获取标题

我尝试了以下内容: By.xpath("//title")

但它不起作用。例如StackOverflow

public class TestStack {

    public static void main(String[] args) {

        System.setProperty("webdriver.chrome.driver", "chromedriver\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("http://stackoverflow.com/");
        WebDriverWait wait = new WebDriverWait(driver, 60);
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//title")));

        System.out.println(driver.findElement(By.xpath("//title")).getText());
    }

}

未找到xpath元素

2 个答案:

答案 0 :(得分:2)

我没有看到您不想使用driver.getTitle()

的原因

但是如果你必须使用xpath,你可以这样做:

driver.findElement(By.xpath("//title")).getText();

<强>更新

根据更新后的问题,似乎失败就在

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//title")));

要修复此问题,我建议您等待超过0秒的时间,并进行更改 visibilityOfElementLocatedpresenceOfElementLocated

理想情况下,您应该使用ExpectedConditions.titleIs() 有关可用选项的更多信息,请访问here

答案 1 :(得分:1)

问题似乎与浏览器有关。以下代码在FF 3.6上生成了正确的输出但在IE 9和Chrome 31中都没有这样做(空字符串)。

WebElement title = driver.findElement(By.xpath("//title"));         
System.out.println(title.getText());

如果你真的不想使用getTitle(),这应该适用于任何浏览器:

title.getAttribute("innerHTML");