Python Selenium XPATH с несколькими тегами

python selenium xpath webdriver xpath-1.0

13 просмотра

2 ответа

У меня есть автоматический скрипт Python для проверки любых изменений в DOM. У меня есть xpath, который работает:

//td[@class='high-bg']/a[@class='link-action'][@data-hintbox='1'][@data-hintbox-static='1'][@role='button'][@href='javascript:void(0)']

Но это дает мне больше результатов, чем мне нужно, и некоторые из них вызывают ошибки. Итак, я хочу получить абстрактные элементы, которые мне нужны, из xpath, поэтому я пытаюсь использовать что-то вроде этого:

//table[@id't5c711109b1eea263276674']/tbody[]/tr[]/td[@class='warning-bg']/a[@class='link-action'][@data-hintbox='1'][@data-hintbox-static='1'][@role='button'][@href='javascript:void(0)']

Но это не работает, так можно ли даже искать xpath с таким количеством тегов?

введите описание изображения здесь

<table id="example">
    <tbody>
        <tr>
            <td class="average-bg">
                <a class="link-action" data-hintbox="1" data-hintbox-static="1" role="button"                   href="javascript:void(0)">1</a>
            </td>
        </tr>
    </tbody>
</table>
Автор: Montė Čiuklys Источник Размещён: 17.05.2019 03:00

Ответы (2)


0 плюса

Вот.

XML

<root>
  <e1 role='a' class='y'></e1>
  <e1 role='a' class='t'></e1>
  <e1 role='a' class='z'></e1>
</root>

XAPTH

//e1[@role='a' and @class='t']

Выход

Element='<e1 class="t" role="a"/>'
Автор: balderman Размещён: 23.02.2019 09:53

0 плюса

О ваших испытаниях кода:

  • В первой попытке вы попытались использовать все атрибуты элемента для создания xpath :

    //td[@class='high-bg']/a[@class='link-action'][@data-hintbox='1'][@data-hintbox-static='1'][@role='button'][@href='javascript:void(0)']
    
  • Элементы с похожими атрибутами могут присутствовать, но в другом положении / местоположении. Следовательно, он возвращает больше желаемых результатов, которые вам нужны.

  • Во второй попытке вы создали абсолютный xpath, который является хрупким :

    //table[@id't5c711109b1eea263276674']/tbody[]/tr[]/td[@class='warning-bg']/a[@class='link-action'][@data-hintbox='1'][@data-hintbox-static='1'][@role='button'][@href='javascript:void(0)']
    

Решение

Согласно предоставленному вами текстовому HTML, для идентификации нужного элемента вы можете использовать одно из следующих решений:

  • xpath:

    driver.find_element_by_xpath("//table[@id='example']//td[@class='average-bg']/a[@class='link-action' and text()='1']")
    
  • css_selector:

    driver.find_element_by_css_selector("table#example td.average-bg>a.link-action")
    
Автор: DebanjanB Размещён: 23.02.2019 11:11
Вопросы из категории :
32x32