无法使用selenium单击父级

2024-09-27 21:32:51 发布

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

我需要用单击此HTML:

<span title="Klik for at oprette booking" onclick="sende('proc_straks.asp','opret','11-02-2018;1;18;20:00;20:45;0;','','', '046009a83941f411fb90c9790a0c92a8')" style='height:52px;' class='banefelt btn_ledig link '>
<div class='padding5'>
<div>20:00 - 20:45</div>
<div class='clearfix'>
</div>
</div>
</span>

所以我尝试了这个代码:

for i in range(1500):
    if driver.find_elements_by_tag_name("div")[i].text == '20:00 - 20:45':    
        diven = driver.find_elements_by_tag_name("div")[i]
        diven.find_element_by_xpath('..').click()

我有个错误:

selenium.common.exceptions.WebDriverException: Message: 
unknown error: Element <span title="Klik for at oprette booking" 
onclick="sende('proc_straks.asp','opret',
'10-02-2018;1;18;20:00;20:45;0;','','', 
'2e24985c6c1be987e1ab481b1588c28a')" style="height:52px;" 
class="banefelt btn_ledig link ">...</span> 
is not clickable at point (172, 611). 
Other element would receive the click: <p class="cc_message">...</p>e click:

Tags: divforbytitleseleniumfindatclass
2条回答

我假设您要单击span元素,那么这样做如何:

span_list = driver.find_elements_by_tag_name("span")

for span in span_list:

    iterate_through_span_list = True

    div_list = span.find_elements_by_tag_name("div")

    for div in div_list:

        if div.text == '20:00 - 20:45':

            span.click()

            iterate_through_span_list = False

            break

    if iterate_through_span_list == False:

        break

如果使用间接的方法来查找所需的span,为什么不直接查找span,而是使用1到1500之间的外部for循环呢

spans = driver
    .find_elements_by_css_selector("span[title*='oprette booking']")

for span in spans:
  time_slot = span
    .find_element_by_css_selector("div.padding5 + div").text

  if time_slot == '20:00 - 20:45':
    span.click()
    break

not clickable是chromedriver 2.31的已知问题,当元素在当前视口中不可见时,如果使用此版本,请升级到2.33或更高版本。你知道吗

如果不管是chromdriver版本,检查是否有任何内容覆盖了span。你知道吗

相关问题 更多 >

    热门问题