簡體   English   中英

無法點擊帶有硒的按鈕

[英]Cannot click on button with selenium

我有以下網站,我想單擊等待 x 秒后彈出的按鈕“跳過此廣告”。

在此處輸入圖片說明

我的代碼如下:

 import selenium
 from selenium import webdriver

 driver = webdriver.Chrome()
 driver.get('http://festyy.com/wpixmC')
 sleep(10)

 driver.find_element_by_xpath('/html/body/div[3]/div[1]/span[5]').click()

但是,當我檢查元素時,我沒有看到要單擊的連接鏈接。 另外,我得到

ElementClickInterceptedException: Message: element click intercepted: Element <span class="skip-btn 
show" id="skip_button" style="cursor: pointer">...</span> is not clickable at point (765, 31). Other 
element would receive the click: <div style="position: absolute; top: 0px; left: 0px; width: 869px; 
height: 556px; z-index: 2147483647; pointer-events: auto;"></div>

不知何故,似乎一切都被重定向到更大的班級? 我怎樣才能克服這個問題? 當我嘗試復制 xpath 時,我也只得到以下內容: /div

提前致謝

您收到的錯誤('元素點擊被攔截')似乎是由於頁面加載時放置了一個 div,它占據了整個頁面,阻止了 Selenium 單擊跳過按鈕。

因此,您必須先刪除該 div,然后運行: driver.find_element_by_xpath('/html/body/div[3]/div[1]/span[5]').click()

您可以通過運行一些 JavaScript 代碼來刪除 div,如下所示:

driver.execute_script("""
var badDivSelector = document.evaluate('/html/body/div[7]', 
document.documentElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, 
null);
if (badDivSelector) {
var badDiv = badDivSelector.singleNodeValue;
badDiv.parentNode.removeChild(badDiv);
}
""")

上面的代碼找到整個頁面的 div(由 xpath 標識)並將其從頁面中刪除。

您的最終代碼應如下所示:

import selenium
from selenium import webdriver

from time import sleep

driver = webdriver.Chrome()
driver.get('http://festyy.com/wpixmC')

sleep(10)

driver.execute_script("""
var badDivSelector = document.evaluate('/html/body/div[7]', 
document.documentElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, 
null)
if (badDivSelector) {
var badDiv = badDivSelector.singleNodeValue;
badDiv.parentNode.removeChild(badDiv);
}
""")

driver.find_element_by_xpath('/html/body/div[3]/div[1]/span[5]').click()

....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM