Home > OS >  Unable to python test script with saucelabs
Unable to python test script with saucelabs

Time:12-10

I tried running a python test script for a login page with saucelabs. I got this error.

selenium.common.exceptions.WebDriverException: Message: failed serving request POST /wd/hub/session: Unauthorized

I looked up online for a solution, found something on this link. But got nothing

selenium - 4.0.0

python - 3.8

Here's the code:

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'
options.headless = True

sauce_options = {'username': 'sauce_username',
                 'accessKey': 'sauce_access_key',
                 }

options.set_capability('sauce:options', sauce_options)
sauce_url = "https://{}:{}@ondemand.us-west-1.saucelabs.com/wd/hub".format(sauce_options['username'],sauce_options['accessKey'])
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('userId')
password.send_keys('password')
login.click()
time.sleep(10)

print('login successful')

driver.quit()

CodePudding user response:

Your code is authenticating two different ways, which I suspect is the problem.

You're passing in sauce_options in a W3C compatible way (which is good), but you've also configured HTTP-style credentials, even though they're empty. In the sauce_url, the {}:{} section basically sets up a username and accessKey of nil.

If you're going to pass in credentials via sauce:options, you should remove that everything between the protocol and the @ symbol in the URL, eg:

sauce_url = "https://ondemand.us-west-1.saucelabs.com/wd/hub".format(sauce_options['username'],sauce_options['accessKey'])
  • Related