Issue
I need to open moz-extension://internal-uuid
page after my Selenium script is started to have an access to the extension's storage API
, to set some prefs there, that this extension will read later and use to do some actions. But when I use selenium.webdriver.Firefox.add_addon(...)
it returns the Extension ID
that differs and can't be used to open the moz-extension://
page. Is there any way to get this Internal UUID
from my code (not manually by inspecting about:debugging#addons
). Or may be some way to pass the data I need from Selenium to Web Extension?
Solution
This code is working for me in Linux and 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();
}
Answered By - Adi Ohana
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.