Chrome扩展程序未在Selenium Javascript Webdriver测试中运行

时间:2018-06-15 20:43:44

标签: javascript google-chrome selenium selenium-webdriver google-chrome-extension

我有一个Selenium Javascript Webdriver测试按预期工作,没有任何错误,除了Chrome扩展应更改页面标题,然后获取cookie无法正常工作。当我在测试页面上手动运行扩展时它按预期工作,所以我很确定问题是我如何调用扩展。任何指针都将非常感激。

我确实有一个关于“二进制”chromeOption的问题,从我看过的文档中看起来它只是持有扩展名的文件夹,但是那些相同的文档在chromeOption中指向文件的“扩展名”在同一个文件夹中。究竟我应该把它放在“二进制”中?

再次感谢!

代码段:

    const path = require('path');
    const chromePath = require('chromedriver').path;
    const webdriver = require('selenium-webdriver');
    const chrome = require('selenium-webdriver/chrome');
    const until = webdriver.until;
    var chromeOptions = webdriver.Capabilities.chrome();

    var service = new chrome.ServiceBuilder(chromePath).build();
    chrome.setDefaultService(service);

    var builder = new webdriver.Builder();
    var options = new chrome.Options();
    var preferences = new webdriver.logging.Preferences();
    var driver;

    preferences.setLevel(webdriver.logging.Type.BROWSER, webdriver.logging.Level.ALL);
    options.setLoggingPrefs(preferences);

    var extensionArray = [""];

    async function AppTest() {

        let driver = builder
                        .forBrowser('chrome')
                        .withCapabilities({
                            'browserName': 'chrome',
                            'chromeOptions':
                            {
                                binary: 
    // Folder containing a copy of the extension

'/Users/MyUserName/Desktop/Testing/chrome-extensions',
                                args: [],
    // Local copy of the extension in the same folder as the test
                                extensions: ['./chrome-extension/extension-demo.crx']
                            }
                        })
                        .setChromeOptions(options)
                        .build();

        // Tests

        await driver.get('https://testURL.com');

        await driver.manage().getCookie("test").then(function(cookie){
            console.log("test", cookie);
        });

        await driver.quit();
    }

1 个答案:

答案 0 :(得分:1)

我不确定“ binary”键是做什么用的,因为我从未遇到过。

您可以在this post上看到我如何在Java中添加扩展名。问题是您不能按原样添加扩展名。需要将其转换为base-64。