Документ Selenium JavascriptExecutor.оценить ‘XPathResult’: Тип результата не является числом

#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