如何使用 Python、Selenium2 和 Chrome Webdriver 访问受基本 HTTP 身份验证保护的站点

软件测试 硒2 网络驱动程序 Python
2022-02-02 21:58:45

我将 Selenium2 的 Python 绑定与 Chrome 网络驱动程序一起使用。我需要访问一个受基本 HTTP 身份验证保护的站点。

from selenium import webdriver

driver = webdriver.Chrome() 
driver.get('http://username:password@example.com')

我希望这可以工作,但 Chrome 似乎忽略了作为 URL 一部分提供的用户名和密码。Chrome 将弹出身份验证对话框,脚本将挂起,直到我手动输入凭据。Chrome 会忘记这个用户名和密码,所以我每次运行脚本时都必须输入它。

2个回答

这有帮助吗?(操作,在遇到麻烦之后,我意识到您的问题出在 Chrome 上)但这在 Windows 7 上的 Firefox 9.0.1 上运行良好

    String configFile = "/apps/configs/logins.cfg";

    // server, port, userid, password defaults
    String userid   = "willey@customer.com";
    String password = "willeyCoy0tt3";
    String server     = "desert.acme.com";
    String securePort = "447";

    // load the properties file - this might throw an exception
    //    if it cannot find or cannot open the file 
    Properties prop = new Properties();
    prop.load(new FileInputStream( configFile ));

    //get the values
    userid   = prop.getProperty( "user" );
    password = prop.getProperty( "password" );

    baseUrl = "https://" + userid + ":" + password + "@" + server + ":" + securePort + "/services/login.html";

    driver = new FirefoxDriver();
    driver.manage().timeouts().implicitlyWait(35, TimeUnit.SECONDS);

    // after that, just use to load the other pages, for example
    driver.get(baseUrl + "/services/listOrders.html");

如果您在 Windows 上运行,您可以创建一个小可执行文件,填充弹出窗口并使用AutoHotkey按 OK ,然后在 driver.get() 之后运行它

也许这不是最干净的解决方案,但它确实有效。