消息:元素单击被拦截:元素<span> ... </ span>在点(657,594)不可单击。其他元素将收到Selenium的点击

凯普特椰子

我正在制作一个网络爬虫,以便从https://www.nvidia.com/zh-cn/shop/geforce/?page=1&limit=9&locale=zh-cn上获取gpu股票,以获取30系列卡,我是为此,使用带有bs4和selenium的python。

我想加载更多购物商品,在网站上它具有此加载更多按钮因此,我抓住了它的类,并使其硒单击它:

driver.find_element_by_class_name("buy-link").click()

但它表示该元素不可交互,HTML为按钮

这个

它给我的确切错误是:

Message: element click intercepted: Element <span class="extra_style buy-link" data-color="#76b900" data-secondary-color="#fff" style="visibility: visible; cursor: pointer;" data-mpn-code="NVGFT070">...</span> is not clickable at point (657, 594). Other element would receive the click: <div class="popBg" id="nv-buy-now-model" style="display: block;">...</div>

我不太了解HTML,如何实现点击此按钮的功能

DebanjanB

LOAD MORE元素是Angular元素,因此单击它需要引入WebDriverWaitelement_to_be_clickable()并且可以使用以下两种定位策略之一

  • 使用CSS_SELECTOR

    driver.get("https://www.nvidia.com/en-us/shop/geforce/?page=1&limit=9&locale=en-us")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div#cookiePolicy-btn-close>span"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.buy-link.load-more-btn[value='LOAD MORE']"))).click()
    
  • 使用XPATH

    driver.get("https://www.nvidia.com/en-us/shop/geforce/?page=1&limit=9&locale=en-us")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@id='cookiePolicy-btn-close']/span"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='buy-link load-more-btn' and @value='LOAD MORE']"))).click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • 浏览器快照:

装载更多

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档