如果浏览器弹出需要用户交互的窗口,这会妨碍自动化过程。有几种方法可以尝试解决这个问题

1. 使用 Selenium 的 Alert 处理:

from selenium.webdriver.common.alert import Alert

# 提交表单
submit_button = driver.find_element(By.ID, 'button_submit_query').click()

# 等待并处理警告框
try:
WebDriverWait(driver, 10).until(EC.alert_is_present())
alert = Alert(driver)
alert.accept()
except:
print("No alert present")

2. 修改 JavaScript 以绕过确认:

在执行查询之前,您可以尝试注入一段 JavaScript 来覆盖默认的确认行为:

driver.execute_script("""
window.confirm = function() { return true; };
window.alert = function() { return true; };
""")

# 然后提交表单
submit_button = driver.find_element(By.ID, 'button_submit_query').click()

3. 使用 ChromeOptions 禁用弹窗:

在创建 WebDriver 时,可以设置 Chrome 选项来禁用弹窗:

from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--disable-popup-blocking")
driver = webdriver.Chrome(options=chrome_options)

4. 直接执行 JavaScript 提交表单:

driver.execute_script("document.getElementById('button_submit_query').click();")

5. 检查是否有其他方式提交查询:

有时候,网页可能提供了 API 或其他方式来执行查询而不需要用户交互。可以检查网页的网络请求,看是否有直接的 AJAX 调用可以模拟。

6. 使用无头浏览器:

如果以上方法都不奏效,您可以考虑使用无头浏览器模式,这样就不会有可见的弹窗:

chrome_options = Options()
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(options=chrome_options)

使用这些方法可能会绕过一些安全检查,所以在使用时要确保有适当的权限和授权。此外,由于每个网站的实现可能不同,可能需要尝试几种方法来找到最适合的解决方案。

声明:未经同意禁止任何个人或组织复制、盗用、采集、发布本站点内容到其他媒体平台。