我试图在python中使用硒单击此链接:
<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”的文本,但仍然出现“无法定位元素”。没有框架,没有新窗口打开。
是的,我要发布此信息是因为我是新手,也不知道我在做什么,因此,不必担心这一点,谢谢。 :)
答案 0 :(得分:2)
这是因为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')]")
答案 1 :(得分:0)
docs中的解释是find_element_by_link_text
仅适用于锚标签内的href文本,您指向h5标签,而锚标签中未包含“包“ 1”-尚未下载” < / p>
答案 2 :(得分:0)
如果要使用文本处理h5元素,请在xpath下面使用
driver.find_elements_by_xpath("//*[contains(text(), 'Package \"1\" - not yet downloaded')]")
find_element_by_link_text
仅适用于链接。即
答案 3 :(得分:0)
尝试 find_element_by_partial_link_text。 “部分”对从公共站点提取信息产生了影响。