[英]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.