Python元素Click行为奇怪

2024-04-20 03:44:14 发布

您现在位置:Python中文网/ 问答频道 /正文

用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

我正在手动监视浏览器,它在我的代码启动之前加载了数据(包括链接),所以它不像不在那里。你知道吗

它抛出了一个没有这种元素的异常。但我很难理解为什么。我一直在使用类似的代码,我唯一能想到的是网站编码并不能让链接文本看起来像链接文本。你知道吗

但我也试过了

link = Driver.find_element_by_id("hr_selection_18359391")

得到了同样的结果。如果有人能告诉我我做错了什么,我会很感激的。你知道吗

/更新:

正如下面指出的,find\ element\ by\ partial\ link\文本在标签上工作,而不是divs。已尝试:

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肯定有问题,但我看不出是什么。你知道吗


Tags: 代码text文本divby站点链接driver
1条回答
网友
1楼 · 发布于 2024-04-20 03:44:14

两件事:

find_element_by_partial_link_text

只对<a>标记有效,对<div>无效

click是一个函数,应该是

link.click()

对于find_element_by_id,如果元素在<frame>内,则需要首先切换到它

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()

相关问题 更多 >