Я задал сегодня вопрос this, но по ошибке я не указал его объем, который предназначен для использования в Selenium Webdriver.Selenium WebDriver - Xpath для выбора диапазона и исключения дочернего узла
Так что у меня этот тд:
<td>
<span id="PartComment">
REMAN WATER PUMP
<i>w/2.05" DIAMETER THERMOSTAT OUTLET - SUPPLIED w/PULLEY
</i>
</span>
</td>
И Я хочу, чтобы найти XPath только текст REMAN Водяной насос позже преобразовать его в строку.
driver.findElement(By.xpath("//span[@id='lblPartComment']/text()"));
Но проблема в том, что, так как я только местонахождение текста, а не объект DOM, WebDriver не сможет относиться к ней как таковой:
Exception in thread "main" org.openqa.selenium.InvalidSelectorException: The given selector //span[@id='lblPartComment']/text() is either invalid or does not result in a WebElement. The following error occurred: InvalidSelectorError: The result of the xpath expression "//span[@id='lblPartComment']/text()" is: [object Text]. It should be an element.
Можете ли вы предоставить альтернатива этому xpath? Тот, который находит текст, упомянутый выше, и исключает текст внутри i
?
Также related.
Благодаря
Я могу предложить вам локатор, но вы можете мне сказать: это текст «REMAN Водяного насос» меняется? Я имею в виду, вы хотите проверить его для разных тестовых случаев? Поскольку синтаксис XPath предназначен для определения диапазона только этим частичным текстом. –
Я хочу найти диапазон и извлечь текст внутри пролета и исключить любой текст в i или любых других дочерних узлах, которые могут возникнуть. Да, текст пересоединения водяного насоса может измениться, но это не имеет значения, потому что я размещаю пролет. Кроме того, чтение вокруг я обнаружил, что // span [@ id = 'PartComment]/[not (self :: i)] может работать, но это также добавляет текст в другие дочерние узлы, поэтому он не работает для меня. Так что в основном то, что мне нужно, это способ использовать функцию not в xpath для исключения узла i (по крайней мере пока) – zuri