Как сформулировать выражение Xpath в python найти все элементы в круговой диаграмме (кольцо лука)?

введите описание изображения здесь <div class="join-strength-chart"> <svg width="350" height="300"> <g transform="translate(175,150)"> <path d="M0,-140A140,140 0 0,1 0,-140L0,-90A90,90 0 0,0 0,-90Z" style="fill: rgb(158, 202, 225);"></path> <path d="M0,-140A140,140 0 0,1 0,-140L0,-90A90,90 0 0,0 0,-90Z" style="fill: rgb(107, 174, 214);"></path> <path d="M0,-140A140,140 0 0,1 134.55816974212192,-38.65357623364557L86.50168054850695,-24.848727578772156A90,90 0 0,0 0,-90Z" style="fill: rgb(66, 146, 198);"></path> <path d="M134.55816974212192,-38.65357623364557A140,140 0 0,1 134.55816974212192,-38.65357623364557L86.50168054850695,-24.848727578772156A90,90 0 0,0 86.50168054850695,-24.848727578772156Z" style="fill: rgb(33, 113, 181);"></path> <path d="M134.55816974212192,-38.65357623364557A140,140 0 0,1 -6.02311262063425,139.87037611431205L-3.872000970407732,89.91667035920061A90,90 0 0,0 86.50168054850695,-24.848727578772156Z" style="fill: rgb(8, 81, 156);"></path> <path d="M-6.02311262063425,139.87037611431205A140,140 0 0,1 -29.89292816157139,136.77138898880526L-19.21688238958161,87.92446434994623A90,90 0 0,0 -3.872000970407732,89.91667035920061Z" style="fill: rgb(116, 196, 118);"></path> <path d="M-29.89292816157139,136.77138898880526A140,140 0 0,1 -130.73721203520947,-50.07775343663755L-84.04535059406322,-32.19284149498128A90,90 0 0,0 -19.21688238958161,87.92446434994623Z" style="fill: rgb(65, 171, 93);"></path> <path d="M-130.73721203520947,-50.07775343663755A140,140 0 0,1 -130.73721203520947,-50.07775343663755L-84.04535059406322,-32.19284149498128A90,90 0 0,0 -84.04535059406322,-32.19284149498128Z" style="fill: rgb(35, 139, 69);"></path> <path d="M-130.73721203520947,-50.07775343663755A140,140 0 0,1 -35.7494613162662,-135.35869390473883L-22.981796560456843,-87.01630322447495A90,90 0 0,0 -84.04535059406322,-32.19284149498128Z" style="fill: rgb(0, 109, 44);"></path> <path d="M-35.7494613162662,-135.35869390473883A140,140 0 0,1 -2.5717582746235667e-14,-140L-1.6532731765437215e-14,-90A90,90 0 0,0 -22.981796560456843,-87.01630322447495Z" style="fill: rgb(158, 202, 225);"></path> </g> </svg> </div>

Пожалуйста, найдите прилагаемую круговую диаграмму и HTML.

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

Я написал следующий код, и по какой-то причине он только наводит мышью на 1 сегмент.

 for elements in driver.find_elements_by_xpath("//div[@class='join-strength-chart']"): elements = driver.find_element_by_tag_name('path') webdriver.ActionChains(driver).move_to_element(elements).perform() time.sleep(2) tooltipmessage = driver.find_element_by_xpath("//div[@class='d3-tip joined-tables-chart n']") print tooltipmessage.text 

Я попытался использовать driver.find_elements_by_tag_name («путь»), и это тоже не работает.

Кто-то может помочь? спасибо введите описание изображения здесь

2 Solutions collect form web for “Как сформулировать выражение Xpath в python найти все элементы в круговой диаграмме (кольцо лука)?”

Это происходит потому, что вы ищете path используя driver.find_element_by_tag_name() . Другими словами, вы находите первый элемент path на странице на каждой итерации цикла.

Вы должны найти его внутри каждого div в цикле:

 for element in driver.find_elements_by_xpath("//div[@class='join-strength-chart']"): path = element.find_element_by_tag_name('path') webdriver.ActionChains(driver).move_to_element(path).perform() ... 

Выражение XPath

 //div[@class='join-strength-chart'] 

вернет набор узлов из элементов <div> , у которых есть атрибут class с join-strength-chart . Вы можете закодировать набор узлов, если у вас их много (это дело?)

Это выражение:

 //div[@class='join-strength-chart']//path 

вернет набор узлов всех элементов <path> которые находятся внутри этих <div> s. Если у вас есть только один <div> этого класса в файле, имеет смысл использовать это выражение, поскольку оно уже предоставляет вам все элементы <path> . Если у вас много join-strength-charts возможно, нет, так как это приведет к возврату всех путей из всех них.

  • Извлечение текста между тегами с помощью XPath, включая разметку
  • Python: использование xpath локально / для определенного элемента
  • python, lxml и xpath - html разбор таблицы
  • Найти элемент в дереве XML с помощью ElementTree
  • Динамические веб-сайты Python Scrapy
  • Python XPath SyntaxError: неверный предикат
  • python scraping reuters site ... bad xpath?
  • Как сопоставить содержимое элемента в XPath (lxml)?
  • Python, XPath: Найти все ссылки на изображения
  • Как найти_element_by_link_text при наличии: Исключение NoSuchElement?
  • Python xpath не работает?
  •  
    Interesting Posts for Van-Lav

    Отправить Ctrl-C для удаленных процессов, запущенных через подпроцесс.Popen и ssh

    Многострочный файл, читаемый в Python

    Есть ли способ подавить печать, которая выполняется в рамках единичного теста?

    Получение имени функции вызывающего абонента внутри другой функции в Python?

    Нарезка списка с использованием переменной в Python

    Проблемы с pip install numpy – RuntimeError: Broken toolchain: невозможно связать простую программу C

    Получение значка на основе mimetype файла, Linux + Python

    Кривая Привязка к временному ряду в форме 'datetime'?

    Кэширование атрибутов классов в Python

    Моделирование маятника в Python с использованием odeint () не совсем работает как маятник

    Функция импорта внутри функции python скрывает существующую переменную

    Ввод двух ключей с одним и тем же хэшем в dict

    Django обратный поиск внешних ключей

    проблема с «wget» в python

    Список всех беспроводных сетей Python для ПК

    Python - лучший язык программирования в мире.