我要在一个网站上按下一个自动按钮,但与此同时,一种名为campaigns(kampanyalar(的东西正在阻止它。我该如何解决这个问题?我希望其他元素不要获得点击属性
错误:
ElementClickInterceptedException: element click intercepted: Element <div class="styled__CampaignCardDescriptionTitle-sc-1n4y3hk-2 hulWUi" color="">...</div> is not clickable at point (531, 35). Other element would receive the click: <a class="styled__HeaderMenuItem-sc-126ws66-35 gEoUee" href="/kampanyalar" id="DPE_TR_HOME_BUTTON_HEADERITEM0">...</a>
ElementClickInterceptedException表示您想要交互的元素在Selenium视图端口中不可用。
三件事:
1.全屏启动浏览器:
driver.maximize_window()
2.使用execute_script:滚动到该元素
driver.execute_script("arguments[0].scrollIntoView();", driver.find_element_by_css_selector(.your_css_selector))
3.操作链的使用:
ActionChains(driver).move_to_element(driver.find_element_by_id('some id where you want to go')).perform()
您需要的进口:
from selenium.webdriver.common.action_chains import ActionChains
ElementClickInterceptedException
可能由多种原因引起
最强大的功能是用JavaScript点击它,而不是用Web驱动程序点击。如下所示:
element = driver.find_element_by_xpath("xpath")
driver.execute_script("arguments[0].click();", element)
然而,最好看看是什么导致了这种异常
如果元素在可见屏幕之外,或者某个页脚元素与之重叠,最好将该元素滚动到视图中:
from selenium.webdriver.common.action_chains import ActionChains
element = driver.find_element_by_xpath("xpath")
driver.execute_script("arguments[0].scrollIntoView();", element)
在其他情况下,这将发生,因为您试图在页面仍在加载元素时单击该元素,以便在该元素上当前找到其他元素。在这种情况下,最好简单地等待,直到这个元素变得可点击。像这样:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "xpath"))).click()
因此,最好根据您在那里面临的具体情况使用更多类似用户的操作,并且只有在没有使用JavaScript的替代方案的情况下才能单击