[英]Pop-Up in Selenium, "</button> is not clickable at point"
我知道之前已经问过这些问题的版本 - 这可能是重复 - 但我已经搜索了所有这些并且找不到可行的解决方案。
我正在尝试从 air.norfolk.gov 网络抓取一些数据。 开头的免责声明弹出窗口真的给我带来了麻烦(我现在的整个目标就是摆脱开头的弹出窗口,这样我才能真正抓取数据!)。
这是我当前的代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from webdriver_manager.chrome import ChromeDriverManager
import time
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.maximize_window()
driver.get('https://air.norfolk.gov')
time.sleep(5)
element_name = driver.find_element(By.TAG_NAME, 'button')
print("Element is visible? " + str(element_name.is_displayed()))
driver.find_element(By.TAG_NAME, 'button').click()
print('button clicked')
time.sleep(5)
# Get search box element from webElement 'q' using Find Element
search_box = driver.find_element(By.ID, "primary_search")
search_box.send_keys("this would be where the address goes")
我已经尝试了很多你会注意到的事情: 我已经尝试检查元素是否可见——它是。 我尝试添加等待以确保它已准备好接收我的点击。 我尝试使用send_keys
而不是click()
因为看起来这个按钮被包裹在一个div
。
每次运行脚本时,我都会查看网站,但免责声明并没有消失。
我得到的错误是:
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <button type="button" class="btn primary-button">...</button> is not clickable at point (912, 317). Other element would receive the click: <div class="modal-body">...</div>
我只是不确定为什么元素无法接收点击。
请帮忙!
谢谢
有 5 个元素突出显示了button
标签。 因此,查找带有tag-name
的元素将无法按预期工作。
尝试使用下面的 xpath 来单击I Understand
。
//button[text()='I Understand']
尝试使用以下代码:
#Imports required for Explicit waits:
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver.get("https://air.norfolk.gov")
wait = WebDriverWait(driver,30)
wait.until(EC.element_to_be_clickable((By.XPATH,"//button[text()='I Understand']"))).click()
你找到了错误的按钮。 您可以使用 CSS 标签找到它: #btn-primary
。
我建议你去那个网站打开 DevTools 用普通的 javascript 做测试,你很快就会搞清楚
如果免责声明弹出窗口是警报,则可以按以下方式处理 -
driver.switchTo().alert().dismiss(); 或 driver.switchTo().alert().accept();
也尝试使用 driver.getWindowHandles() 在窗口之间切换,然后单击元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.