硒无法单击按钮

HJA24

我有以下网站,我要在等待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()

....

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章