首页 > 解决方案 > 如何使用 Java 处理带有 Selenium WebDriver 的 Firefox 中的身份验证弹出窗口

问题描述

我正在尝试创建用于绕过服务器身份验证的扩展,将其安装在 Firefox 浏览器上并在创建驱动程序时传递 .xpi 文件,以便在登录时调用它并绕过服务器身份验证。在 Firefox 上安装 .xpi 文件时遇到错误。错误:“无法安装此插件,因为它似乎已损坏”

步骤 1. 创建 manifest.json 文件(代码如下)

{
“name”: “Webrequest API”,
“version”: “1.0”,
“description”: “Extension to handle Authentication window”,
“permissions”: [
“webRequest”,
“webRequestBlocking”,
“”
],
“background”: {
“scripts”: [“webrequest.js”]
},
“manifest_version”: 2
}
  1. 创建 webrequest.js 文件。下面提到的代码。

    var target = “<a href="https://sso.viacomcloud.com/" rel="nofollow noreferrer">https://sso.viacomcloud.com/”;

    var myCredentials = {
    username: “getestone”,
    password: “V*******”
    }
    
    var pendingRequests = [];
    
    // A request has completed.
    // We can stop worrying about it.
    function completed(requestDetails) {
    console.log(“completed: ” + requestDetails.requestId);
    var index = pendingRequests.indexOf(requestDetails.requestId);
    if (index > -1) {
    pendingRequests.splice(index, 1);
    }
    }
    
    function provideCredentialsSync(requestDetails) {
    // If we have seen this request before, then
    // assume our credentials were bad, and give up.
    if (pendingRequests.indexOf(requestDetails.requestId) != -1) {
    console.log(“bad credentials for: ” + requestDetails.requestId);
    return {cancel:true};
    }
    pendingRequests.push(requestDetails.requestId);
    console.log(“providing credentials for: ” + requestDetails.requestId);
    return {authCredentials: myCredentials};
    }
    
    browser.webRequest.onAuthRequired.addListener(
    provideCredentialsSync,
    {urls: [target]},
    [“blocking”]
    );
    
    browser.webRequest.onCompleted.addListener(
    completed,
    {urls: [target]}
    );
    
  2. 使用 7-zip 文件管理器创建了一个 zip 文件并将该 zip 文件重命名为 Ext.xpi

  3. 在 firefox(版本 70)上打开 about:config 并将 xpiextensionsignrequired 更改为 'False'</p>

  4. 打开关于:Firefox 上的插件。选择“从文件安装扩展”。选择上面第 4 步中创建的 Ext.xpi。

  5. 我收到以下错误:“无法安装此插件,因为它似乎已损坏。” 而不是在 Firefox 浏览器上获取安装选项。

请帮助@SubjectiveReality

标签: javascriptauthenticationfirefoxfirefox-addonadd-on

解决方案


如果您正在寻找快速解决方案,请尝试使用“机器人”类并发送密钥。

机器人 rb= new Robot(); rb.Keypress() .....


推荐阅读