selenium python 通过 href 文本查找链接并单击它

jak*_*dog 2 python selenium

我有我的脚本来登录到一个站点。然后我需要点击包含在一个

<a href> </a>

我尝试了多种方法都没有成功。我需要“可用部署”的链接仅在单击名为“作业板”的下拉框后才会出现。

站点代码如下所示:

<li class="">
    <a aria-expanded="false" class="dropdown-toggle" data-toggle="dropdown" href="portalPost?s=a1W390000045MxAEAU&amp;p=a1V39000003y7e1EAA" role="button">Job Board <span class="caret"></span>
    </a>
<ul class="dropdown-menu" role="menu">

<li>
    <a href="portalPage?s=a1W390000045MxAEAU&amp;p=a1V39000003y7dbEAA">Available Deployments
    </a>
</li>
Run Code Online (Sandbox Code Playgroud)

我试过几个版本,都没有成功:

-SNIP-
driver.find_element_by_name("logmein").click()
driver.find_element_by_linkText("Job Board").click()    
driver.find_element_by_linkText("Available Deployments").click()
Run Code Online (Sandbox Code Playgroud)

-SNIP-
driver.find_element_by_name("logmein").click()
driver.find_element_by_xpath(u'//a[text()="Job Board"]').click()
driver.find_element_by_xpath(u'//a[text()="Available Deployments"]').click()
Run Code Online (Sandbox Code Playgroud)

我得到的错误通常如下所示:

selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{"method":"xpath","selector":"//a[text()="Available Deployments"]"}

Bua*_*ban 5

看起来元素的文本中有一个空格。您必须使用normalize-space修剪文本。请参阅下面的示例。

driver.find_element_by_xpath(u'//a[text()="Job Board"]').click()
waitForPresence = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.XPATH,'//a[normalize-space(text())="Available Deployments"]')))
driver.find_element_by_xpath('//a[normalize-space(text())="Available Deployments"]').click()
Run Code Online (Sandbox Code Playgroud)


jak*_*dog 5

我用以下方法解决了这个问题:

driver.find_element_by_link_text("Job Board").click()
driver.find_element_by_link_text("Available Deployments").click()
Run Code Online (Sandbox Code Playgroud)