python selenium find_element_by_link_text,元素存在但未找到



我正试图在python中使用selenium:点击此链接

<header class="row package-collapse">
<h5 ng-bind="ctrl.getPackageHeader(package)" class="ng-binding">Package "1" - not yet downloaded</h5>
<!-- ngIf: package.DownloadedAt -->
</header>

在尝试了许多不同的替代方案后,我终于通过迭代链接找到了正确的文本来实现这一点,比如:

list = browser.find_elements_by_tag_name("h5")
for item in list:
text = item.text
if text == 'Package "1" - not yet downloaded':
item.click()

好的,所以,它是有效的。但是,如果我只是尝试显而易见的解决方案:,为什么我会出现"无法定位元素"的错误呢

browser.find_element_by_link_text('Package "1" - not yet downloaded')

它就在那里,我看着它,所以我不明白我做错了什么。我也尝试过使用不带"1"的部分链接文本来搜索它,使用单引号或双引号,但我仍然得到"找不到元素"。没有框架,没有打开新窗口或任何东西。

是的,我之所以发布这篇文章,是因为我是一个新手,不知道自己在做什么,所以没有必要详述这一点,谢谢。:(

这是因为by_link_text只适用于<a>标记。对于其他标签,您可以使用xpath

完全匹配

find_element_by_xpath("//h5[.='Package "1" - not yet downloaded']")

对于部分文本

find_element_by_xpath("//h5[contains(., '"1" - not yet downloaded')]")

它在文档中解释说,find_element_by_link_text只能在锚标记内使用href文本,您指向h5标记,而"Package"1"-尚未下载"不在锚标记中

如果您想使用文本处理h5元素,请使用下面的xpath

driver.find_elements_by_xpath("//*[contains(text(), 'Package "1" - not yet downloaded')]")

find_element_by_link_text仅适用于链接。即href

尝试find_element_by_partial_link_text。'Partial使得从公共网站获取信息变得与众不同。

相关内容

  • 没有找到相关文章

最新更新