Selenium: сложный пример XPath - PullRequest
0 голосов
/ 30 января 2019

Мне нужно найти узел с XPath в коде Selenium для автоматизации.Проблема состоит в том, что узел, который нужно выбрать, не содержит информацию для идентификации, а другой узел, который является потомком родительского узла целевого узла.

<object>...</object>

<object>
    <div>Name</div>
    <target></target>
</object>

<object>...</object>

Для упрощения ситуации это выглядит таквыше.Есть несколько «объектных» узлов, отличающихся друг от друга только «Именем».Хотя мы не можем использовать скобки в XPath, как я могу выбрать этот узел методом driver.find_element_by_xpath()?

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Если вы хотите сделать универсальную функцию и каждый раз передавать свой параметр. Попробуйте это.

def fxpath(varstring):
    Xpathelement = "//div[text()='{}']/../target".format(varstring)
    driver.find_element_by_xpath(Xpathelement)

fxpath('Name')
0 голосов
/ 30 января 2019

Если я правильно понимаю ваш вопрос, вам может пригодиться следующее выражение XPath:

//div[text()="Name"]/../target

По сути, это цель div с текстовым содержимым Name, шаг вверхк его родительскому элементу с помощью .., а затем выбирает дочерние элементы типа узла target.

Если узел target не является непосредственным дочерним элементом родительского элемента, следующий запрос будет искать узлы target, которые являютсяпотомки родителя на любой глубине (обратите внимание, единственное отличие состоит в том, что теперь перед символом target стоит две косые черты):

//div[text()="Name"]/..//target
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...