Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 消息:元素单击被拦截:元素<;span></span>;在点(657594)处不可单击。其他元素将收到带有Selenium的单击_Python_Selenium_Selenium Webdriver_Web Scraping_Webdriverwait - Fatal编程技术网

Python 消息:元素单击被拦截:元素<;span></span>;在点(657594)处不可单击。其他元素将收到带有Selenium的单击

Python 消息:元素单击被拦截:元素<;span></span>;在点(657594)处不可单击。其他元素将收到带有Selenium的单击,python,selenium,selenium-webdriver,web-scraping,webdriverwait,Python,Selenium,Selenium Webdriver,Web Scraping,Webdriverwait,我制作了一个webscraper,从中获得gpu股票,从中获得一张30系列的卡,为此我使用了python和bs4以及selenium 我想加载更多的购物项目,在网站上它有这个。所以我抓住了它的类,并使它成为: driver.find_element_by_class_name("buy-link").click() 但是它说,元素在不可交互的HTML中表示按钮 它给我的确切错误是: Message: element click intercepted: Element &

我制作了一个webscraper,从中获得gpu股票,从中获得一张30系列的卡,为此我使用了python和bs4以及selenium

我想加载更多的购物项目,在网站上它有这个。所以我抓住了它的类,并使它成为:

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>
消息:元素点击截获:元素。。。在点(657594)处不可单击。其他元素将收到单击:。。。
我对HTML不太了解,如何单击此按钮才能实现加载更多元素是一个元素,因此要单击它,您需要将
元素归纳为可单击()
,您可以使用以下任一方法:

  • 使用
    CSS\u选择器

    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
    
  • 浏览器快照:


问题是,该页面上大约有20个元素与您的第一个定位器相匹配,
。按类别名称(“购买链接”)查找元素。
。在这种情况下,如果您使定位器更具体,您可以将其隔离到“加载更多”输入按钮

试试这个

driver.find_element_by_css_selector("input.buy-link").click()
一般来说,添加等待是一个好的做法,除非您确定自己永远都不需要它

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.XPATH, "//span[text()='CLOSE']")).click()
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.buy-link")).click()

有关更多信息和详细信息,请参阅。

Selenium认为元素是可单击的,这就是它尝试单击的原因。问题是路上有一个DIV。查看错误消息OP posted。这不起作用,我不认为这是等待时间,我认为元素本身是inclickable@JeffC你错了,我想,它既不是人类也不是人工智能机器人。该元素是一个角度元素。所以底线是,首先你必须了解基于角度的网站,特别是角度元素的行为,然后相应地使用Selenium。@Kryptic请检查更新的答案,并让我知道状态。“Selenium thinks…”是一个拟人化的例子。角元素没有什么神奇之处。。。如果该元素没有准备好被单击,它将抛出一个不同的错误。这就是我在这里的观点,在你的其他回答中,你也以同样的方式回答了。等待并不能解决这个问题。。。正如您已经多次看到并修改了您的答案。我将类更改为
加载更多btn
,但这不起作用,因此我尝试了您的类,并出现了相同的错误:\
selenium.common.exceptions.element ClickInterceptedException:Message:element ClickIntercepted:element在点(464871)不可单击。其他元素将收到点击:…
,因此现在的问题是,当Selenium向下滚动以点击LOAD MORE按钮时,该按钮会出现在cookie横幅下方,该横幅上写着:“此站点使用cookie在您的计算机上存储信息。有关如何阻止cookie的详细信息,请参阅我们的cookie策略。”单击横幅上的“关闭”后,按钮应显示并可单击。我已经更新了代码,它成功地在我的机器上运行。@JeffC又错了。再次读取错误,元素
与cookie banner元素不同。你为什么不检查一下网站?@DebanjanB
我已经更新了代码,并且它在我的机器上成功运行。
你应该放慢速度,实际阅读问题。。。这样你就不用多次更新你的答案了。你也应该放慢速度,阅读我对你答案的评论,因为他们指出了这一点,但你像往常一样,不假思索地拒绝了他们。你也应该放慢速度,真正阅读我的答案和我答案下面的评论,因为如果你愿意,你已经看到我尝试了这个代码,它在我的机器上工作。我无法解释其他人的机器设置等等@DebanjanB,我想你的意思是“假设”,而不是“盗梦空间”。