Selenium: используйте несколько строк в find_element_by_partial_link_text () - PullRequest
0 голосов
/ 03 февраля 2019

Я хочу щелкнуть ссылку, которая содержит либо частичную строку foo ИЛИ строку в тексте ссылки.

Что-то вроде:

elem = driver.find_element_by_partial_link_text(['foo','bar']).click()

или если он использовал стиль str.contains ("foo | bar"):

elem = driver.find_element_by_partial_link_text('foo|bar']).click()

Какой правильный путь ксделать это?

РЕДАКТИРОВАТЬ Пример HTML:

<a class="noprint" href="/Docs/Doc?request=62391270&amp;eCode=0XrIMF9p%2BMKSvdpdpqC5Nd3VFn4fB1eLXC3X0yHiYptOxprT0N%2BtjAu0%3D" target="_blank" type="submit">foo</a>

Или один с баром

<a class="noprint" href="/DocView/Doc?request=62391270&amp;eCode=CWJ1stkSu3qFZ1coGTEsM8ka4xqU0XrIMF9p%2BfB1eLXC3wh4xPFQnYwOqX0yHiYptOxprT0N%2BtjAu0%3D" target="_blank" type="submit">bar</a>

РЕДАКТИРОВАТЬ2 Финалрабочий код был:

elem = driver.find_element_by_xpath("//a[contains(text(), 'foo') or contains(text(), 'bar')]").click()

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

Если вы не хотите создавать N условных строк для этого, вы можете просто использовать или оператор or, используя xpath.

Пример: //a[contains(text(), 'aaaaa') or contains(text(), 'bbbbb')]

0 голосов
/ 03 февраля 2019

Я могу обойти это в краткосрочной перспективе, сделав это, но это кажется дурацким решением:

try:
    elem = driver.find_element_by_partial_link_text('foo').click()
except:
    elem = driver.find_element_by_partial_link_text('bar').click()

РЕДАКТИРОВАТЬ Пример HTML:

<a class="noprint" href="/Docs/Doc?request=62391270&amp;eCode=0XrIMF9p%2BMKSvdpdpqC5Nd3VFn4fB1eLXC3X0yHiYptOxprT0N%2BtjAu0%3D" target="_blank" type="submit">foo</a>

Или один с баром

<a class="noprint" href="/DocView/Doc?request=62391270&amp;eCode=CWJ1stkSu3qFZ1coGTEsM8ka4xqU0XrIMF9p%2BfB1eLXC3wh4xPFQnYwOqX0yHiYptOxprT0N%2BtjAu0%3D" target="_blank" type="submit">bar</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...