我知道以前有人问过这个问题的版本——这可能是重复的——但我已经搜索了所有这些问题,但找不到有效的解决方案。
我正试图从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()
在窗口之间切换,然后单击元素。