#selenium
#selenium
Вопрос:
Я пытаюсь сначала взять node
div из html, используя JavascriptExecutor document.evaluate
String txt = ((JavascriptExecutor)driver)
.executeScript("return document.evaluate("//div[@id = 'SIvCob']/node()[1]",
document, null, XPathResult.ANY_TYPE, null)").toString();
System.out.print(txt);
Но я получаю ошибку при executeScript
org.openqa.selenium.JavascriptException:
javascript error:
Failed to read the 'numberValue' property from 'XPathResult':
The result type is not a number.
node
Я хочу простой текст (без html-тегов или других вещей)
Я использую ChromeDriver.
Комментарии:
1. Ну, во-первых, вам не нужны обратные косые черты, чтобы избежать кавычек, окружающих xpath. Не уверен, что это исправит проблему полностью, но это определенно недопустимый xpath.
2. @C.Peck Вы уверены? Похоже, что если бы обратная косая черта была удалена, то Java даже не компилировалась бы. Куньлунь, ты хочешь сказать, что тебе нужно текстовое значение найденного элемента? Если это так, почему бы просто не выполнить «return document.getElementByXPath(«мое выражение xpath»). Текст; ?
3. Да, вы правы, я пропустил, что это было внутри кавычек jsexecutor .
4. Можете ли вы загрузить HTML-код просматриваемой страницы или указать URL-адрес? Это самый простой / возможно, единственный способ, которым, я думаю, вы получите хороший ответ.
5. @C.Peck Я понял это. Я добавил
stringValue
вreturn document.evaluate(...).stringValue
P.S:document.getElementByXPath
не существует в javascript.
Ответ №1:
Решением моей проблемы было вызвать stringValue
в результате document.evaluate(...)
.
Вот так: document.evaluate(...).stringValue