2013-08-30 14 views
0

Есть ли способ, чтобы получить титул InstEd из XPath driver.getTitle()Как получить название по xpath?

Я попытался следующие: 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

дают HTML пожалуйста .. –

+1

есть причина, вы не хотите использовать 'driver.getTitle()'? – Amey

+0

Мне будет интересно ответить на вопрос @Amey –

ответ

1

Проблема, похоже, зависит от браузера. Следующий код производится правильный вывод на FF 3.6, но не в состоянии сделать это (пустую строку) и в IE 9 и Chrome 31.

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

Если вы действительно не хотите использовать getTitle() это должно работать на любом браузер:

title.getAttribute("innerHTML"); 
2

Я не вижу причин, почему вы не хотели бы использовать driver.getTitle()

Но если вы должны использовать XPath, вы можете сделать:

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

UPDATE

основе обновленного вопрос, кажется, как неудача в

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

Чтобы исправить это, я бы порекомендовал ожидая дольше времени 0 секунды, а также изменения visibilityOfElementLocated в presenceOfElementLocated.

В идеале вы должны использовать ExpectedConditions.titleIs() Более подробную информацию о доступных возможностях можно найти here.

+0

ОП есть какие-то скрытые вещи, я думаю, поскольку он не использует прямой метод .. :) –

+0

Другой способ - это 'driver.findElement (By.xpath (" // title/text() "))' ... Я знаю ruby, где я мог бы делать как 'driver.find_element (" // title/text() "). to_s'. Я не знаю эквивалент java. –

+0

К сожалению, это решение не делает этого. Я уже пробовал это, пожалуйста, взгляните на мой обновленный вопрос выше, где я пытаюсь получить название из StackOverflow – Buras

Смежные вопросы