Ссылка: https://developer.chrome.com/apps/nativeMessaging
У меня есть следующий JSON:
{
"name":"com.test.app",
"description":"testapp",
"path":"/Users/username/dirname/nativeHost.sh",
"type":"stdio",
"allowed_origins": [
"chrome-extension://extensionid/"
]
}
в /Users/username/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.test.app.json
Когда я запускаю расширение Chrome непосредственно в браузере ChromeЯ могу получить доступ к Native Messaging. Тем не менее, когда я запускаю расширение Chrome с помощью RemoteWebdriver, запущенного Selenium, это не так. Я инициализирую веб-драйвер, используя следующие возможности:
ChromeOptions options = new ChromeOptions();
String pathToExtension = "/Users/cmohammed/Downloads/extension.crx";
options.addExtensions(new File(pathToExtension));
options.addArguments("–load-extension=" + pathToExtension);
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("goog:" + ChromeOptions.CAPABILITY, options);
Затем я открываю расширение на новой вкладке:
// open in a new tab
((JavascriptExecutor)driver).executeScript("window.open('about:blank','_blank');");
ArrayList<String> tabs = new ArrayList<>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(2));
driver.get("chrome-extension://extensionid/popup.html");
И все это прекрасно работает, когда селен работает до тех пор, пока расширение не вызовет расширениеchrome.runtime.sendNativeMessage()
.
У кого-нибудь есть идеи относительно того, как я могу отладить это дальше?