使用Saucelabs运行Python Selenium登录测试脚本出现Unauthorized错误如何解决
错误根因
核心是Saucelabs服务端对你的请求认证失败,触发401错误,具体可能的触发点如下:
- 身份凭证错误:代码中使用的是
sauce_username、sauce_access_key占位符,未替换为Saucelabs后台真实的账号密钥;或账号所属区域与你配置的us-west-1节点不匹配 - 认证配置冲突:Selenium 4.x版本中,你同时将凭证写入
sauce:options和远程连接URL中,双重认证参数冲突导致服务端校验失败 - 冗余参数干扰:你本地配置的
options.headless = True与Saucelabs托管浏览器的运行规则冲突,触发能力校验失败,连带返回认证错误
修复方案
按顺序执行以下操作即可解决:
- 核对身份信息
- 登录Saucelabs个人后台,复制真实的用户名、Access Key替换代码中的占位值
- 若你的账号属于欧盟区域,将远程URL的域名替换为
ondemand.eu-central-1.saucelabs.com
- 清理重复认证配置
移除URL中的凭证拼接逻辑,仅保留sauce:options中的凭证配置,修改后的远程URL为:sauce_url = "https://ondemand.us-west-1.saucelabs.com/wd/hub" - 移除冗余配置
删除options.headless = True行,Saucelabs托管浏览器的运行模式由服务端控制,本地无需额外设置 - 补充必填能力参数
在sauce_options中添加测试名称字段,避免服务端能力校验驳回:sauce_options = { 'username': '替换为你的真实用户名', 'accessKey': '替换为你的真实Access Key', 'name': '登录页面自动化测试' }
修改后可直接运行的核心代码如下:
import time from selenium import webdriver from selenium.webdriver.chrome.options import Options as ChromeOptions options = ChromeOptions() options.browser_version = '96' options.platform_name = 'Windows 10' sauce_options = { 'username': '替换为你的真实Saucelabs用户名', 'accessKey': '替换为你的真实Saucelabs Access Key', 'name': '登录页面测试' } options.set_capability('sauce:options', sauce_options) sauce_url = "https://ondemand.us-west-1.saucelabs.com/wd/hub" driver = webdriver.Remote(command_executor=sauce_url, options=options) driver.get('https://cq-portal.qa.webomates.com/#/login') time.sleep(10) user=driver.find_element('css selector','#userName') password=driver.find_element('id','password') login=driver.find_element('xpath','//*[@id="submitButton"]') user.send_keys('你的测试账号') password.send_keys('你的测试密码') login.click() time.sleep(10) print('login successful') driver.quit()
内容的提问来源于stack exchange,提问作者randomUser
相关产品推荐
相关产品推荐

