1

Ich verwende NightWatch.js und für einige UI-Tests und Ich möchte die Standard-Browser-Instanz mit den zusätzlichen gewünschten capabilities starten (dh eine Erweiterung ist aktiviert mit einigen spezifischen Werten angewendet).Aktivieren und Ändern von Chome-Erweiterungen in der Standard-NightWatch-Browser-Instanz (speziell ModHeader-Erweiterung)

Hinweis: Ich kann die Aktionen ausführen, aber nicht innerhalb der Standard-Browser-Instanz.

Um völlig klar zu sein, tun die Aktionen sieht manuell wie: ModHeader-Extension Link zur Erweiterung:https://chrome.google.com/webstore/detail/modheader/idgpnmonknjnojddfkpgkljpfnnfcklj

ich in der Lage bin, die Erweiterung zu ermöglichen und auch die Werte aktualisieren Sie diesen Befehl in einem Pageobject-Datei gespeichert ist :

setChromeOptions(url) { 
    const chromeCapabilities = webdriver.Capabilities.chrome(); 

    // setting chrome options 
    const chromeOptions = { 
    args: 

    // path to local ModHeader extension 
    ['--load-extension=/Users/raja.bellebon/AppData/Local/Google/Chrome/User Data/Default/Extensions/idgpnmonknjnojddfkpgkljpfnnfcklj/2.1.2_0/'], 
    }; 

    chromeCapabilities.set('chromeOptions', chromeOptions); 
    const driver = new webdriver.Builder().withCapabilities(chromeCapabilities).build(); 
    driver.get('chrome-extension://idgpnmonknjnojddfkpgkljpfnnfcklj/_generated_background_page.html'); 

    // setup ModHeader extension with the header value 
    driver.executeScript(` 
    localStorage.setItem('profiles', JSON.stringify([{ /* eslint-env browser*/ 
     title: 'Selenium', 
     hideComment: true, 
     appendMode: '', 
     headers: [ 
     { enabled: true, name: 'X-Static-Homepage', value: 'true' }, 
     ], 
     respHeaders: [], 
     filters: [], 
    }]))`); 
    driver.get(url); 
    return this; 
} 

die Funktion wird zu Beginn des Tests (als erster Schritt oder in einem before) genannt. Wenn ich den Code ausführe, öffnet sich ein zweites Browserfenster und die Aktionen werden innerhalb ausgeführt. In der Zwischenzeit hat die Haupt (oder Standard) -Browserinstanz keine Erweiterung. Wie kann ich Erweiterungen in der Haupt-Browser-Instanz ändern?

Nachdem ich ein paar Blogs gelesen habe, habe ich festgestellt, dass ich die conf.js modifizieren muss und meinen Code dort anwenden muss, aber ich bin nicht in der Lage, den aktuellen Treiber zu erhalten.

Ich bin mit massiven Kopfschmerzen fest ... Jede Hilfe wäre willkommen, Danke!

+0

Hey, danke für deine Antwort! Bist du sicher, dass es funktioniert? Ich erinnere mich, dass ich in der Lage war, die Seite mit dem modHeader-Set zu starten..aber leider hatte ich zwei Tabs geöffnet, eines mit den gesetzten Headern und dasjenige, wo mein Test ausgeführt wurde ... Wenn du nur ein Tab hast und der Test ausgeführt wird innerhalb der Seite mit dem Header Set - Nizza !!! – Raja

Antwort

1

Entschuldigung für die späte Antwort. Ich habe gerade herausgefunden, wie es geht, wollte also teilen, wenn Sie es in Zukunft brauchen.

"desiredCapabilities": { 
    "javascriptEnabled": true, 
    "acceptSslCerts": true, 
    "browserName": "chrome", 
    "chromeOptions": { 
     "args": ["--load-extension=/home/pratik/.config/google-chrome/Default/Extensions/idgpnmonknjnojddfkpgkljpfnnfcklj/2.1.2_0"] 
    } 
    } 

Dann

in Ihrem Test
before: (client) => { 
    modHeaderPage = client.page.modHeaderPage(); 
    modHeaderPage.setHeader(); 
    homePage = client.page.homePage(); 
} 

Und Ihre Seite Objekt würde wie folgt aussehen:

Zum einen in Ihrer nightwatch.json Datei, gewünschte Fähigkeit wie unten gezeigt

module.exports = { 
    elements: {}, 
    commands: [{ 
    setHeader() { 

     // set the context on the extension so the localStorage can be accessed 
     const url = 'chrome-extension://idgpnmonknjnojddfkpgkljpfnnfcklj/2.1.2_0/settings.tmpl.html'; // modHeader extension 
     this.navigate(url).waitForElementPresent('body', 20000); 

     // setup ModHeader with header 
     this.api.execute(` 
     localStorage.setItem('profiles', JSON.stringify([{ /* eslint-env browser*/ 
      title: 'Selenium', 
      hideComment: true, 
      appendMode: '', 
      headers: [ 
      { enabled: true, name: 'Header_Name', value: 'Header_Value' }, 
      ], 
      respHeaders: [], 
      filters: [], 
    }]))`); 
    }, 
    }], 
}; 
Verwandte Themen