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

使用ActionChains的send_keys无法在Basic Auth页面输入值的问题

解决Basic Auth输入无效的问题

问题根源

你遇到的输入无效,是因为Basic Auth的登录弹窗是浏览器原生对话框,不属于网页DOM结构,Selenium的ActionChains仅用于操作网页内元素,对这种浏览器级别的弹窗完全无效,所以你的输入操作根本没作用在弹窗上。

两种可行解决方案

方案1:URL直接携带认证信息(最简便)

把用户名和密码直接拼接在URL里,格式为https://{用户名}:{密码}@{目标地址},浏览器会自动完成认证,无需手动输入。

修改你的setup_method里的get方法即可:

def setup_method(self):
    self.driver = webdriver.Chrome(executable_path='D:\WORK\PycharmProjects\at\chromedriver.exe')
    self.driver.implicitly_wait(2)
    # 直接携带用户名和密码访问
    self.driver.get('https://admin:admin@the-internet.herokuapp.com/basic_auth')

这样打开页面后会直接完成认证,后续test_login方法里的输入操作可以全部删掉,直接验证登录成功的元素即可。

方案2:通过Selenium处理原生认证弹窗

针对浏览器原生的Basic Auth弹窗,可以使用Selenium的switch_to.alert结合authenticate方法(注意:部分现代浏览器可能对该方法支持有限,优先推荐方案1)。

修改后的test_login方法示例:

def test_login(self):
    # 切换到认证弹窗
    alert = self.driver.switch_to.alert
    # 传入用户名和密码完成认证
    alert.authenticate('admin', 'admin')
    # 验证登录成功
    self.driver.find_element(By.XPATH, "//div[contains(text(), 'Congratulations!')]")

你的代码里的额外错误

你写的action.send_keys(Keys, "admin")是语法错误,正确写法是action.send_keys("admin"),但即使修正这个错误,因为弹窗是原生的,依然无法解决问题,所以核心还是要换处理原生弹窗的方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 06:24:17