有没有办法通过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元素
答案 0 :(得分:2)
我没有看到您不想使用driver.getTitle()
但是如果你必须使用xpath,你可以这样做:
driver.findElement(By.xpath("//title")).getText();
<强>更新强>
根据更新后的问题,似乎失败就在
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//title")));
要修复此问题,我建议您等待超过0
秒的时间,并进行更改
visibilityOfElementLocated
至presenceOfElementLocated
。
理想情况下,您应该使用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");