硒:在find_element_by_partial_link_text()中使用多个字符串

时间:2019-02-02 22:53:06

标签: python selenium selenium-webdriver

我想单击链接文本中包含 partial 字符串 foo OR bar 的链接。

类似的东西:

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

,或者如果它是使用str.contains( “富|栏”)式:

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>

EDIT2 ,最终的工作代码为:

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

2 个答案:

答案 0 :(得分:3)

如果您不想创建N条条件行来执行此操作,则可以使用xpath或使用运算符or

示例://a[contains(text(), 'aaaaa') or contains(text(), 'bbbbb')]

答案 1 :(得分:0)

这样做可以在短期内解决它,但这似乎是一个糟糕的解决方案:

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>