d-d*_*d-d 4 python firefox selenium firefox-addon-webextensions
我需要moz-extension://internal-uuid在我的 Selenium 脚本启动后打开页面,以访问扩展的storage API,在那里设置一些首选项,该扩展稍后将读取并用于执行一些操作。但是当我使用selenium.webdriver.Firefox.add_addon(...)它时,它会返回Extension ID不同的内容,并且无法用于打开页面moz-extension://。有什么方法可以Internal UUID从我的代码中获取它(而不是通过检查手动about:debugging#addons)。或者可能有某种方式将我需要的数据从 Selenium 传递到 Web 扩展?
这段代码在 Linux 和 Mac 上适用于我:
public static void main(String[] args) throws IOException {
FirefoxOptions options = new FirefoxOptions();
FirefoxDriver driver = new FirefoxDriver(options);
String userPrefsFileContent = readFile(driver.getCapabilities().getCapability("moz:profile") + "/prefs.js");
String extensionUuid = getExtensionUuid(userPrefsFileContent);
driver.quit();
}
private static String getExtensionUuid(String userPrefsFileContent) {
String uuid = null;
String[] usersPrefsList = userPrefsFileContent.split(";");
for (String currentPref : usersPrefsList) {
if (currentPref.contains("extensions.webextensions.uuids")) {
uuid = currentPref.split(":")[1].replaceAll("\"", "").replace("}", "")
.replace(")", "").replace("\\", "");
}
}
if(uuid.contains(",")) {
uuid = uuid.split(",")[0];
}
return uuid;
}
private static String readFile(String pathname) throws IOException {
File file = new File(pathname);
StringBuilder fileContents = new StringBuilder((int) file.length());
String lineSeparator = System.getProperty("line.separator");
try (Scanner scanner = new Scanner(file)) {
while (scanner.hasNextLine()) {
fileContents.append(scanner.nextLine()).append(lineSeparator);
}
}
return fileContents.toString();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4211 次 |
| 最近记录: |