Как getText () для XPath с атрибутом «display: none»

1

Я хотел бы использовать getText() для одного XPath, нужен текст, что есть.

//интервал (содержит (@стиль 'дисплей: нет'))

XPath работает в Firebug, я пробовал getText, getAttribute, пока не повезло

  • 1
    Показать HTML!
  • 0
    Эта ссылка подробно описывает, как использовать javascriptExecutor метод java: stackoverflow.com/questions/11430773/… Чтобы помочь вам в дальнейшем, нам нужно будет увидеть HTML, как уже заметил Барак.
Теги:
selenium
selenium-webdriver
webdriver
dojo

2 ответа

2
Лучший ответ

Немного сложно сказать без точного HTML, который вы не указали в своем вопросе...

Для начала вам нужно изменить это:

"//span(contains(@style,'display:none'))"

К этому:

"//span[contains(@style,'display:none')]"

ОБНОВИТЬ:

В качестве альтернативы, поскольку элемент span не отображается, вы можете сделать это с помощью:

String innerHTML = elem.getAttribute("innerHTML");

Где elem является родительским узлом элемента span.

Затем, чтобы получить фактический текст, вам нужно проанализировать строку innerHTML.

  • 0
    Одна вещь, Селен не взаимодействует с элементами, которые не видны. Скорее всего, ему понадобится решение для исполнителя javascript.
  • 0
    Спасибо, Барак, но я все еще не могу получить текст (). Ричард, не могли бы вы указать мне это решение JS?
Показать ещё 6 комментариев
0

Поскольку элемент невидим (он имеет display:none), Selenium не может взаимодействовать с ним. Вам нужно отдать свой драйвер JavascriptExecutor, а затем выполнить следующий javascript:

$x("//span(contains(@style,'display:none'))")[0].text

[0] возвращает 1-й элемент, возвращаемый xpath.

Это вернет внутренний текст элемента.

  • 0
    Ваш xpath должен быть исправлен на $x("//span[contains(@style,'display:none')]").text
  • 0
    Я не верю, что $x имеет какое-либо отношение к jQuery, это специфично для Chrome и Firefox (с Firebug)
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню