0

我正在尝试使用 selenium 单击页面上的链接并在单击按钮后读取某个元素,但一直遇到此错误消息:

ElementClickInterceptedException: Message: element click intercepted: Element <li class="clink-hold">...</li> is not clickable at point (367, 727). Other element would receive the click: <iframe id="google_ads_iframe_/21732118914/box_live-medrectangle-2_0" title="3rd party ad content" name="google_ads_iframe_/21732118914/box_live-medrectangle-2_0" width="970" height="90" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" srcdoc="" sandbox="allow-forms allow-pointer-lock allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation-by-user-activation" style="border: 0px; vertical-align: bottom;" data-google-container-id="13" data-load-complete="true"></iframe>
  (Session info: chrome=78.0.3904.108)

这是我写的代码

from selenium import webdriver
from time import sleep
page_link = 'https://box.live/fight-results/'
chromedriver = 'C:\\Users\\User\\Downloads\\chromedriver'
def click_info():
    cdriver = webdriver.Chrome(chromedriver)
    cdriver.get(page_link)
    cdriver.find_element_by_class_name('clink-hold').click()
    sleep(10)
    text=cdriver.find_element_by_class_name('name').text
    print(text)
click_info()
4

3 回答 3

1

这是因为有 Google 广告与您的按钮重叠:

在此处输入图像描述

您需要先关闭广告。这是交叉 [x] 元素:

<span class="ezmob-footer-close" onclick="document.getElementById('ezmobfooter').style.display='none';">x</span>

然后继续执行您的代码。

于 2019-12-04T10:48:28.290 回答
0

只是添加到已经添加的答案。我设法解决了这个问题。我意识到正如 Alexey 所提到的,有一个元素(广告)覆盖了我试图点击的内容。这就是我为解决这个问题所做的

def click_info():
    cdriver = webdriver.Chrome(chromedriver)
    cdriver.get(page_link)
    element = cdriver.find_element_by_class_name('clink-hold')
    cdriver = cdriver.execute_script('arguments[0].click();',element)
    text=cdriver.find_element_by_class_name('contestant-name line-ignore').text
    print(text)
于 2019-12-04T10:55:19.093 回答
-1

您需要切换到 iframe :

iframe = driver.find_element_by_xpath("//iframe[@class='ifram_class_name']")

接着 :

driver.switch_to.frame(iframe)
cdriver.find_element_by_class_name('clink-hold').click()
sleep(10)
text=cdriver.find_element_by_class_name('name').text
print(text)

最后:

driver.switch_to.default_content()
于 2019-12-04T10:36:59.490 回答