Как извлечь текст «152» из текстового узла с помощью Selenium

Как извлечь текст «152» из текстового узла с помощью Selenium

Мне нужно извлечь xpath для числа 152. Созданный мной xpath извлекает текст после 152, который является «Тестовым», но исключает число 152. Мне нужно получить этот счет.

Я использую ниже xpath:

//div\[@class='filter_filter__5H_fi'\]/h1

Не уверен, как это получить.

Отметьте язык привязки, пожалуйста. Также "152" является текстовым узлом, вы не можете анализировать .text()[1] в селене.

cruisepandey 01.04.2022 13:17
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
1
38
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно HTML:

HTML

оба текста 152 и Контрольная работа находятся в пределах их соответствующих текстовые узлы.


Решение

Чтобы получить текст 152, вы можете использовать любой из следующих стратегии поиска:

  • Используя Джава, cssселектор и firstChild:

    WebElement = driver.findElement(By.cssSelector("div.filter_filter__5H_fi > h1"));
    System.out.println(((JavaScriptExecutor)driver).executeScript("return arguments[0].firstChild.textContent;", element).toString());
    
  • Используя питон, xpath и firstChild:

    parent_element = driver.find_element(By.XPATH, "//div[@class='filter_filter__5H_fi']/h1")
    print(driver.execute_script('return arguments[0].firstChild.textContent;', parent_element).strip())
    

Я пытался использовать "//div[@class='filter_filter__5H_fi']/h1/text()[1]", но выдает ошибку: "Результатом этого xpath является Object.text, он должен быть элементом".

Nilesh Ambestha 01.04.2022 12:55

Я тоже этого не предлагал. Просто скопируйте строки кода и дайте мне знать о результате.

undetected Selenium 01.04.2022 12:56

Спасибо. Я попытался запустить первый код, но он по-прежнему возвращает только второй элемент «Test».

Nilesh Ambestha 01.04.2022 13:26

Плохо, была опечатка, сейчас исправил. Сообщите мне статус.

undetected Selenium 01.04.2022 13:28

Это сработало !!! большое спасибо ! Можно ли этого добиться только с помощью исполнителя javascript? Разве у нас нет прямого xpath для этого? Дай мне знать.

Nilesh Ambestha 04.04.2022 08:40

@NileshAmbestha Вы можете сделать это с помощью css/xpath, но определенно это будет сложно. Использование исполнитель javascript — идеальный и самый простой подход в случае текстовых узлов.

undetected Selenium 04.04.2022 09:35

Другие вопросы по теме