Python 当用户名和密码包含特殊字符时通过 Selenium 进行 HTTP 基本身份验证

Python HTTP Basic Authentication through Selenium when username and password contains special characters

我在使用这种结构尝试使用默认的 Selenium 身份验证时遇到了一个非常具体的问题 username:password@siteurl.com
所以这里有一个问题: 如果我使用这样的密码 "''asd'asd';123asd'(带有特定符号)traceback 会说 URL 不正确。但如果密码只是数字和字母——一切都OK。 下面是一个可以正常工作的代码示例,但对于我的示例,我需要用很多特定符号填充密码,而且我无权更改它。

import unittest
from selenium import webdriver


class LoggedTest(unittest.TestCase):
    @classmethod
    def setUp(inst):
        # create a new Chrome session """
        inst.driver = webdriver.Chrome()
        inst.driver.implicitly_wait(30)
        inst.driver.maximize_window()

        # navigate to the application home page """
        inst.driver.get("http://admin:admin@theinternet.herokuapp.com/basic_auth")

对于基本身份验证,如果密码包含符号,例如"''asd'asd';123asd' 您需要 translate 字符串 转换为 UTF。例如:

username = "%21%40user" #stands for !@user
password = "%0D%0Apass" #stands for ^&pass
webpage = "something.url.com"

现在您可以使用:

url = 'http://{}:{}@{}'.format(username, password, webpage)
driver.get(url)