You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Selenium在Internet Explorer模式下打开多URL并自动登录

解决IE模式下Selenium批量打开URL并自动登录的问题

问题分析

你的代码存在三个核心问题:

  1. 浏览器驱动配置错误:导入了EdgeOptions却直接使用webdriver.Ie,要在Edge的IE模式下运行,需配置EdgeDriver的IE模式参数,而非旧版IEDriver。
  2. 登录元素定位错误:登录按钮无name="login"属性,原代码用find_element_by_name("login")无法找到元素,导致登录失败。
  3. 缺少多标签页处理逻辑:未实现批量打开URL的标签页切换与登录流程。

解决方案

1. 配置Edge的IE模式驱动

微软已停止维护旧版IE驱动,推荐使用Edge浏览器的IE模式兼容旧网页,需配置EdgeOptions启用IE模式,并使用EdgeDriver启动。

2. 修正登录元素定位

通过class_name或css_selector定位登录按钮,调用click()方法触发登录(submit()仅适用于表单元素,不适用当前按钮)。

3. 实现多URL批量处理

使用execute_script打开新标签页,通过window_handles切换标签页,逐个完成登录操作。

完整修正代码

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from msedge.selenium_tools import EdgeOptions, Edge

# 配置Edge的IE模式
edge_options = EdgeOptions()
edge_options.use_chromium = True
# 启用IE模式
edge_options.add_argument("--ie-mode")
edge_options.add_argument("start-maximized")
# 可选:启用隐私模式
# edge_options.add_argument("inprivate")

# 登录凭证
username = "user"
password = "1234"
# 需要批量处理的DVR URL列表
dvr_urls = ["http://192.168.1.50", "http://192.168.1.51", "http://192.168.1.52"]

# 初始化Edge驱动(IE模式),路径用原始字符串避免转义错误
driver = Edge(executable_path=r"C:\dev\msedgedriver.exe", options=edge_options)

try:
    for idx, url in enumerate(dvr_urls):
        if idx == 0:
            # 第一个URL直接打开
            driver.get(url)
        else:
            # 后续URL打开新标签页
            driver.execute_script(f"window.open('{url}');")
            # 切换到新打开的标签页
            driver.switch_to.window(driver.window_handles[idx])
        
        # 等待用户名输入框加载完成(替代time.sleep,更可靠)
        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, "username"))
        )
        # 输入用户名和密码
        driver.find_element(By.ID, "username").send_keys(username)
        driver.find_element(By.ID, "password").send_keys(password)
        
        # 等待登录按钮加载并点击
        WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.CLASS_NAME, "login-btn"))
        ).click()
        
        # 等待登录完成(可根据页面跳转或元素变化调整等待逻辑)
        time.sleep(2)

finally:
    # 可选:保留页面则注释此行,关闭浏览器则取消注释
    # driver.quit()
    pass

关键注意事项

  • 驱动版本匹配:EdgeDriver版本必须与你的Edge浏览器版本一致,需下载对应版本的驱动。
  • 路径处理:驱动路径使用原始字符串(r"路径")或双反斜杠(\\),避免转义错误。
  • 等待逻辑:用WebDriverWait替代固定time.sleep,适配不同页面加载速度,提升稳定性。
  • IE模式开启:确保Edge浏览器已在设置中开启"允许在IE模式下打开网站"功能。

内容的提问来源于stack exchange,提问作者Mohamed Hussein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 18:32:45