【问题标题】:Python Selenium Element Click Behaving StrangeleyPython Selenium 元素单击行为奇怪
【发布时间】: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 一定有问题,但我看不到是什么。

【问题讨论】:

  • 这是在frameiframe 标签内吗?

标签: python selenium web-scraping


【解决方案1】:

两件事:

find_element_by_partial_link_text

仅适用于&lt;a&gt; 标签,不适用于&lt;div&gt;

click是一个函数,应该是

link.click()

对于find_element_by_id,如果元素在&lt;frame&gt; 内,则需要先切换到它

frame = driver.find_element_by_id("id")
driver.switch_to.frame(frame)
# continue with the code
link = Driver.find_element_by_id("hr_selection_18359391")
link.click()

然后切换回来

driver.switch_to.default_content()

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-11-27
  • 2019-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-09
相关资源
最近更新 更多