Selenium и xpath: найти div с классом /id и проверить текст внутри

Я пытаюсь найти xpath Найти div и убедиться, что div содержит текст string внутри.

Здесь HTML:

<div class="Caption">
  Model saved
</div>

и

<div id="alertLabel" class="gwt-HTML sfnStandardLeftMargin sfnStandardRightMargin sfnStandardTopMargin">
  Save to server successful
</div>

Это код, который я использую в данный момент:

viewerHelper_.getWebDriver().findElement(By.xpath("//div[contains(@class, 'Caption' and .//text()='Model saved']"));
viewerHelper_.getWebDriver().findElement(By.xpath("//div[@id='alertLabel'] and .//text()='Save to server successful']"));

В частности:

//div[contains(@class, 'Caption' and .//text()='Model saved']
//div[@id='alertLabel'] and .//text()='Save to server successful']

Ответ 1

Чтобы убедиться в этом: -

<div class="Caption">
  Model saved
</div>

Напишите это -

//div[contains(@class, 'Caption') and text()='Model saved']

И чтобы убедиться в этом: -

<div id="alertLabel" class="gwt-HTML sfnStandardLeftMargin sfnStandardRightMargin sfnStandardTopMargin">
  Save to server successful
</div>

Напишите это -

//div[@id='alertLabel' and text()='Save to server successful']

Ответ 2

Для учета начального и конечного пробелов вы, вероятно, захотите использовать normalize-space()

//div[contains(@class, 'Caption') and normalize-space(.)='Model saved']

и

//div[@id='alertLabel' and normalize-space(.)='Save to server successful']

Обратите внимание, что //div[contains(@class, 'Caption') and normalize-space(.//text())='Model saved'] также работает.

Ответ 3

Для класса и текста -

//div [содержит (@class, 'Caption') и (text(), 'Model saved')]

и

Для класса и id -

//div [содержит (@class, 'gwt-HTML') и @id = "alertLabel" ]