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" ]