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

Chrome下Selenium Python点击Login按钮失败,报JavascriptException求助

解决Selenium点击Login按钮时的JavascriptException错误

针对你遇到的Cannot read properties of undefined (reading 'defaultView')错误,可按以下步骤排查修复:

1. 确保ChromeDriver与Chrome版本完全匹配

你当前Chrome版本是110.0.5481.178,必须下载对应版本的ChromeDriver,版本不兼容是触发这类JS错误的核心原因之一。

2. 抛弃time.sleep,改用显式等待控制操作时机

强制等待完全依赖固定时长,无法适配页面动态加载节奏,替换为WebDriverWait等待元素可交互,确保操作时机准确:

3. 检查页面是否存在iframe嵌套

若登录按钮位于iframe内部,需先切换到iframe上下文才能定位元素,可通过浏览器开发者工具查看元素所在层级结构。

4. 用更稳定的定位方式+替代点击方法

常规点击失效时,可尝试模拟鼠标动作点击,或直接执行JS点击绕过交互限制,同时优先使用文本类定位(如按钮文本)提升稳定性。

修改后的示例代码

import pandas as pd
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome(executable_path=r'C:\Drivers\chromedriver.exe')
# 移除隐式等待,避免与显式等待冲突
driver.delete_all_cookies()

url="https://customer.nokia.com/s/"
driver.get(url)

wait = WebDriverWait(driver, 20)
# 等待第一个弹窗按钮可点击并操作
first_button = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[contains(@class, 'slds-button_outline-brand')]")))
first_button.click()

# 等待Login按钮加载完成,优先用文本定位
login_btn = wait.until(EC.element_to_be_clickable((By.LINK_TEXT, "Login")))

# 方法1:用ActionChains模拟鼠标点击
actions = ActionChains(driver)
actions.move_to_element(login_btn).click().perform()

# 若仍失效,尝试方法2:JS直接点击
# driver.execute_script("arguments[0].click();", login_btn)

# driver.quit()

额外排查点

  • 检查页面是否有遮罩层、弹窗遮挡登录按钮
  • 禁用浏览器扩展,避免干扰页面渲染
  • 尝试以无头模式运行浏览器,排除界面渲染异常问题

内容的提问来源于stack exchange,提问作者Schrödinger's Cat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 07:07:11