Chrome Native Messaging не работает Веб-драйвер Selenium - PullRequest
0 голосов
/ 07 ноября 2019

Ссылка: 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().

У кого-нибудь есть идеи относительно того, как я могу отладить это дальше?

...