Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium JavaScript Webdriver测试中未运行Chrome扩展_Javascript_Google Chrome_Selenium_Selenium Webdriver_Google Chrome Extension - Fatal编程技术网

Selenium JavaScript Webdriver测试中未运行Chrome扩展

Selenium JavaScript Webdriver测试中未运行Chrome扩展,javascript,google-chrome,selenium,selenium-webdriver,google-chrome-extension,Javascript,Google Chrome,Selenium,Selenium Webdriver,Google Chrome Extension,我有一个SeleniumJavaScriptWebDriver测试,它按预期工作,没有给出任何错误,除了一个Chrome扩展不工作,该扩展应该更改页面标题,然后获取cookie。当我在测试页面上手动运行扩展时,它会按预期工作,因此我很确定问题在于如何调用扩展 我确实有一个关于“二进制”chromeOption的问题,从我看的文档来看,它看起来就像是保存扩展名的文件夹,但这些文档在chromeOption中的“扩展名”指向同一文件夹中的文件。我到底应该在“二进制”中放什么 代码段: con

我有一个SeleniumJavaScriptWebDriver测试,它按预期工作,没有给出任何错误,除了一个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();
    }
我不确定“二进制”键是用来做什么的,因为我从未遇到过它

您可以看到我是如何在中添加Java扩展的。关键是不能按原样添加扩展;它需要转换为base-64