7

Ich habe eine Chrome-Erweiterung, die API-Aufrufe an die Datenbank erstellt und holt einige Daten für eine Website, die derzeit geöffnet ist. Wenn ich z. B. target.com öffne und auf die Erweiterung klicke, erhalten Sie relevante Daten für target.com.Öffnen Sie eine Chrom-Erweiterung durch Selen-Webdriver

Ich versuche, automatisierte Tests für sie durch Selen-Web-Treiber zu schreiben, die ich regelmäßig für Regressionstests ausführen kann. Um die Erweiterung zu testen, muss ich zuerst die Erweiterung öffnen (normalerweise tun wir dies, indem wir auf das Erweiterungssymbol klicken).

Ich habe verschiedene Möglichkeiten versucht, auf das Erweiterungssymbol zu klicken, war aber nicht erfolgreich. (Zum Beispiel mit der Tastenkombination ALT - LEFT_ARROW - SPACE, aber das funktioniert nicht über den Webdriver).

Ich habe auch versucht, diesen (here erwähnt):

options = webdriver.ChromeOptions() 
options.add_argument("--app-id = mbopgmdnpcbohhpnfglgohlbhfongabi") 

Aber obigen Code nicht Verlängerung beim Öffnen hilft.

Ich würde mich über irgendwelche Gedanken darüber freuen, wie ich dies mit Python in Selenium Webdriver tun kann.

Antwort

-3

Sie können das Argument übergeben --load-extension an den Chrome WebDriver durch die Optionen, wo der Pfad auf Ihrem entpackte Erweiterung. Also in Ihrem Fall könnten Sie verwenden: options.add_argument("--load-extension=ABSOLUTE_PATH_TO_EXTENSION")

Auch here is ein Link zu einem Code, den ich geschrieben habe, der mit der --load-extension Methode funktioniert. (Es ist Ruby nicht Python, aber sollte Ihnen einige Einblicke geben.)

+0

Ich konnte die Chrome-Erweiterung mit 'chrome_options.add_argument (" - load-extension = ABSOLUTE_PATH_TO_UNPACKED_EXTENSION ") laden;' aber mein Problem ist, dass ich nicht in der Lage bin, auf die Erweiterung (dh die Erweiterung) von webdriver zu klicken – curiousJ

2

Hatte das gleiche Problem. Arbeitete um es herum mit dem Link: chrome-extension://<the extension identity>/html/login.html - anstelle des Symbols. So kann ich alle Funktionen der Erweiterung testen.

+0

Wenn dies der Fall ist, unterscheidet sich das Verhalten etwas von der Offenheit im Popup. – Xan

+0

Ist es möglich, die Subprocess.call und Applescripts zu versuchen? –

+0

@KathyChow Können Sie weitere Details angeben? Es muss ein Popup geladen werden, wenn Sie auf die Schaltfläche Chrome Extension klicken. – Volatil3

3

Wir haben ähnliche Anforderungen, arbeiten an Chrom-Add-on mit Selenium WebDriver. Wie'Aleksandar Popovic 'gesagt hat, können wir mit WebDriver nicht auf das Chrome-Erweiterungssymbol klicken, da das Symbol nicht auf der Webseite angezeigt wird.

Wir verwenden sikuli (Automation-Tool, die Bilderkennung verwenden), klicken Sie auf das Chrom-Add-on. Danach wird das Add-On-Popup ein anderes Browser-Fenster sein, also benutze das Switch-Fenster, um Aktionen für das Add-On-Popup auszuführen. Hier

ist der Beispielcode in Java unter Verwendung von sowohl Selen WebDriver und Sikuli.

Sikuli wird basierend auf Bilderkennung ausgeführt. Bevor Sie den Code ausführen, scrollen Sie den Screenshot des Chrome-Browsers und beschneiden ihn so, dass nur Addon im Bild verfügbar ist. Speichern Sie das Bild als "AddonIcon.png".

Sikuli passt das Bild (in unserem Fall AddonIcon.png) auf dem Bildschirm an und simuliert die Klickaktion darauf.

import java.io.File; 
import java.util.List; 
import java.util.Set; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.chrome.ChromeOptions; 
import org.openqa.selenium.support.ui.ExpectedConditions; 
import org.openqa.selenium.support.ui.WebDriverWait; 
import org.sikuli.script.App; 
import org.sikuli.script.FindFailed; 
import org.sikuli.script.Pattern; 
import org.sikuli.script.Screen; 
public class PageTest { 

    public static void main(String[] args) { 
     // Opening chrome with that addon 
     ChromeOptions options = new ChromeOptions(); 
     options.addExtensions(new File("Path to ur chrome addon (.cxt file)"));  
     System.setProperty("webdriver.chrome.driver", "path to chromedriver.exe"); 
     WebDriver driver = new ChromeDriver(options); 
     driver.manage().window().maximize(); 

     // Creating object to the Sukali screen class 
     Screen s=new Screen(); 

     //Finding and clicking on the Addon image 
     try { 
      s.find("Path to the 'AddonIcon.png'"); 
      s.click("Path to the 'AddonIcon.png'"); 
     } catch (FindFailed e) {    
      e.printStackTrace(); 
     } 

     //Wait until new Addon popup is opened. 
     WebDriverWait wait = new WebDriverWait(driver, 5);  
     wait.until(ExpectedConditions.numberOfWindowsToBe(2)); 

     // Switch to the Addon Pop up 
     String parentWindow= driver.getWindowHandle(); 
     Set<String> allWindows = driver.getWindowHandles(); 
     for(String curWindow : allWindows){    
      if(!parentWindow.equals(curWindow)){ 
      driver.switchTo().window(curWindow); 
      } 
     } 

     /***********Ur code to work on Add-on popup************************/ 
    } 
} 

Ich hoffe, das wird Ihnen helfen.

1
from selenium import webdriver 
option = webdriver.ChromeOptions() 
option.add_extension("./testCRX/angular_ext.crx") 
driver = webdriver.Chrome(chrome_options=option) 
driver.get('chrome://extensions/') 

für die hinzugefügte Erweiterung: Ich denke, wir shortkey in Chrom setzen: // extensions/-> Tastaturkürzel, fügen Sie die Tastenkombinationen zu Ihrer zusätzlichen Erweiterung, dann Tastatur senden, um die Erweiterung zu starten.

+0

https://developer.chrome.com/extensions/commands fügen einen Shortkey für Extension hinzu –

0

Ich weiß, es ist nicht genau das gleiche, aber konnten Sie nicht einen iframe in die Seite mit der Quelle Ihres Popups injizieren und dann mit ihm zum Testen interagieren?

<iframe src='chrome-extension://<extensionId>/popup.html'/> 
Verwandte Themen