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

时间:2018-11-19 09:01:21

标签: python selenium selenium-webdriver windows-authentication basic-authentication

在尝试通过这种结构username:password@siteurl.com使用默认的Selenium身份验证时,我遇到一个非常具体的问题 所以这是一个问题:如果我使用这样的密码"''asd'asd';123asd'(带有特定符号),traceback会说URL是不正确的。但是,如果密码仅包含数字和字母,则一切正常。 以下是一个可以正常运行的代码示例,但对于我的示例,我需要在密码中填充许多特定的符号,并且我无权对其进行更改。

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")

1 个答案:

答案 0 :(得分:1)

对于基本身份验证,如果密码包含符号,例如"''asd'asd';123asd'您需要将 string 转换为 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)