我有我的脚本登录网站。然后我需要点击
中包含的另一个链接 <a href> </a>
我尝试过多种方法但没有成功。我需要的链接&#34;可用的部署&#34;只有在单击名为&#34; Job Board&#34;。
的下拉框后才会出现网站代码如下所示:
<li class="">
<a aria-expanded="false" class="dropdown-toggle" data-toggle="dropdown" href="portalPost?s=a1W390000045MxAEAU&p=a1V39000003y7e1EAA" role="button">Job Board <span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<li>
<a href="portalPage?s=a1W390000045MxAEAU&p=a1V39000003y7dbEAA">Available Deployments
</a>
</li>
我尝试了几个版本,没有成功:
-SNIP-
driver.find_element_by_name("logmein").click()
driver.find_element_by_linkText("Job Board").click()
driver.find_element_by_linkText("Available Deployments").click()
和
-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()
我得到的错误通常如下:
selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{&#34;方法&#34;:&#34; xpath&#34;,&#34;选择器&#34;: &#34; // [文本()=&#34;可用部署&#34;]&#34;}
答案 0 :(得分:4)
看起来元素的文本中有一个空格。
您必须使用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()
答案 1 :(得分:2)
我用以下方法解决了这个问题:
driver.find_element_by_link_text("Job Board").click()
driver.find_element_by_link_text("Available Deployments").click()