python selenium find_element_by_link_text,元素存在但未找到
python selenium find_element_by_link_text, element exists but not found
我正在尝试在 python 中使用 selenium 单击此 link:
<header class="row package-collapse">
<h5 ng-bind="ctrl.getPackageHeader(package)" class="ng-binding">Package "1" - not yet downloaded</h5>
<!-- ngIf: package.DownloadedAt -->
</header>
在尝试了许多不同的替代方案之后,我终于设法通过迭代 links 直到找到正确的文本来完成此操作,如下所示:
list = browser.find_elements_by_tag_name("h5")
for item in list:
text = item.text
if text == 'Package "1" - not yet downloaded':
item.click()
好的,所以,它有效。但是,如果我只是尝试显而易见的解决方案,为什么我会收到 "unable to locate element" 错误:
browser.find_element_by_link_text('Package "1" - not yet downloaded')
它就在那里,我正在看着它,所以我只是不明白我做错了什么。我也尝试使用部分 link 文本来搜索不带“1”的文本,使用单引号或双引号,但我仍然得到 "unable to locate element." There are no frames, no new windows打开或任何东西。
是的,我发帖是因为我是新手,不知道自己在做什么,所以无需赘述这一点,谢谢。 :)
它在 docs 中解释说 find_element_by_link_text
仅适用于锚标记内的 href 文本,您指向一个 h5 标记并且 "Package "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')]")
如果您想使用文本处理您的 h5 元素,请使用下面的 xpath
driver.find_elements_by_xpath("//*[contains(text(), 'Package \"1\" - not yet downloaded')]")
find_element_by_link_text
仅适用于 link。即 href
尝试find_element_by_partial_link_text。 'Partial' 从 public 站点提取信息的不同之处。
我正在尝试在 python 中使用 selenium 单击此 link:
<header class="row package-collapse">
<h5 ng-bind="ctrl.getPackageHeader(package)" class="ng-binding">Package "1" - not yet downloaded</h5>
<!-- ngIf: package.DownloadedAt -->
</header>
在尝试了许多不同的替代方案之后,我终于设法通过迭代 links 直到找到正确的文本来完成此操作,如下所示:
list = browser.find_elements_by_tag_name("h5")
for item in list:
text = item.text
if text == 'Package "1" - not yet downloaded':
item.click()
好的,所以,它有效。但是,如果我只是尝试显而易见的解决方案,为什么我会收到 "unable to locate element" 错误:
browser.find_element_by_link_text('Package "1" - not yet downloaded')
它就在那里,我正在看着它,所以我只是不明白我做错了什么。我也尝试使用部分 link 文本来搜索不带“1”的文本,使用单引号或双引号,但我仍然得到 "unable to locate element." There are no frames, no new windows打开或任何东西。
是的,我发帖是因为我是新手,不知道自己在做什么,所以无需赘述这一点,谢谢。 :)
它在 docs 中解释说 find_element_by_link_text
仅适用于锚标记内的 href 文本,您指向一个 h5 标记并且 "Package "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')]")
如果您想使用文本处理您的 h5 元素,请使用下面的 xpath
driver.find_elements_by_xpath("//*[contains(text(), 'Package \"1\" - not yet downloaded')]")
find_element_by_link_text
仅适用于 link。即 href
尝试find_element_by_partial_link_text。 'Partial' 从 public 站点提取信息的不同之处。