【发布时间】:2016-03-14 09:37:56
【问题描述】:
使用 Chromedriver 加载网站并尝试点击基于文本的链接。
这是我正在寻找的链接的站点代码:
<div class="league_check" id="hr_selection_18359391" onclick="HorseRacingBranchWindow.showEvent(18359391);" title="Odds Available">
<span class="race-status">
<img src="/i/none_v.gif" width="12" height="12" onclick="HorseRacingBranchWindow.toggleSelection(18359391); cancelBubble(event);">
</span>
14:10 *
</div>
我正在尝试:
justtime = "14:10"
link = Driver.find_element_by_partial_link_text(justtime)
link.click
我正在手动查看浏览器在我的代码触发之前它加载了数据(包括链接),所以它不像不存在。
它抛出了一个 no such element 异常。但我很难理解为什么。我一直使用类似的代码,我唯一能想到的就是网站编码不会使链接文本看起来像链接文本。
但我也试过
link = Driver.find_element_by_id("hr_selection_18359391")
得到了同样的结果。有点难过这里会感谢任何可以阐明我做错了什么的人。
/更新:
正如下面所指出的,find_element_by_partial_link_text 适用于标签而不是 div。试过了:
find_element(By.PARTIAL_LINK_TEXT(justtime))
link = Driver.find_element_by_xpath("//div[contains(text(), justtime))")
但那里也没有骰子。我想我将不得不找到另一种方法来做到这一点。
根据我正在阅读的内容,Xpath 包含的内容应该可以正常工作。甚至尝试过:
link = Driver.find_element_by_xpath("//div[contains(.,'14:10 * ')]")
link.click()
这给了我一个属性错误..我觉得有点奇怪。
/在兔子洞的深处:
所以我想也许在某个地方隐藏了不止一个链接。我试过了:
justtime = "14:10"
links = Driver.find_elements_by_xpath("//div[contains(.,justtime)]")
for eachlink in links:
print eachlink.text
它似乎吐出了页面上的每个链接。即使这些 DIV 没有理由包含 14:10。所以我的 xpath 一定有问题,但我看不到是什么。
【问题讨论】:
-
这是在
frame或iframe标签内吗?
标签: python selenium web-scraping