7

Ho creato un'estensione chrome che effettua chiamate API al database e recupera alcuni dati rilevanti per un sito Web attualmente aperto. Ad esempio, se apro target.com e faccio clic sull'estensione, questo ti fornirà dati rilevanti per target.com.Aprire un'estensione cromata tramite il selettore web selenio

Sto provando a scrivere test automatici tramite driver di selenio che posso eseguire regolarmente per i test di regressione. Per testare l'estensione, devo prima aprire l'estensione (generalmente lo facciamo facendo clic sull'icona dell'estensione).

Ho provato diversi modi di tentare di fare clic sull'icona dell'estensione ma non sono riuscito. (Ad esempio, usando la scorciatoia da tastiera ALT - LEFT_ARROW - SPACE ma ciò non funziona tramite webdriver).

Ho anche provato questa (menzionato here):

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

Ma soprattutto il codice non aiuta ad aprire estensione.

Gradirei qualsiasi idea su come posso farlo usando python in Selenium Webdriver.

risposta

-3

È possibile passare l'argomento --load-extension alla WebDriver Chrome attraverso le opzioni in cui i punti di percorso al tuo estensione scompattata. Quindi nel tuo caso potresti usare: options.add_argument("--load-extension=ABSOLUTE_PATH_TO_EXTENSION")

Inoltre, here is un collegamento ad un codice che ho scritto che funziona usando il metodo --load-extension. (È Ruby not Python, ma dovrebbe darti qualche informazione.)

+0

Sono stato in grado di caricare l'estensione chrome usando 'chrome_options.add_argument (" - load-extension = ABSOLUTE_PATH_TO_UNPACKED_EXTENSION ");' ma il mio problema è che non sono in grado di fare clic sull'estensione (cioè di aprire l'estensione) da webdriver – curiousJ

2

avuto lo stesso problema. Lavorato intorno usando il link: chrome-extension://<the extension identity>/html/login.html - invece dell'icona. In questo modo, posso testare tutte le funzioni dell'estensione.

+0

Mentre vero, il comportamento differisce un po 'dall'essere aperto nel popup. – Xan

+0

È possibile provare il subprocess.call e i applescripts? –

+0

@KathyChow Potete fornire ulteriori dettagli? È possibile caricare un popup facendo clic sul pulsante Estensione di Chrome – Volatil3

3

Abbiamo requisiti simili, lavorando su Chrome Add-on con Selenium WebDriver. Come ha detto '@Aleksandar Popovic', non possiamo fare clic sull'icona di estensione chrome con WebDriver, poiché l'icona è fuori dalla pagina web.

Ci avvaliamo di sikuli (strumento di automazione che utilizza il riconoscimento di immagini), per fare clic sul componente aggiuntivo di Chrome. Dopo tale popup aggiuntivo sarà un'altra finestra del browser, quindi utilizza la finestra di dialogo per eseguire azioni sul popup aggiuntivo.

Ecco il codice di esempio in Java utilizzando sia Selenio WebDriver e Sikuli.

Sikuli verrà eseguito in base al riconoscimento dell'immagine. Prima di eseguire il codice, la schermata del browser Chrome viene ritagliata in modo che nell'immagine sia disponibile solo l'Addon. Salva l'immagine come "AddonIcon.png".

Sikuli corrisponderà all'immagine (nel nostro caso AddonIcon.png) sullo schermo e simulerà l'azione del clic su di esso.

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************************/ 
    } 
} 

Spero che questo ti possa aiutare.

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/') 

per aprire l'estensione aggiunto: Penso che possiamo impostare ShortKey in chrome: // extensions/- Scorciatoie> da tastiera, aggiungere le scorciatoie da tastiera per il proprio interno aggiunto, quindi inviare la tastiera per lanciare l'estensione.

+0

https://developer.chrome.com/extensions/commands aggiungi Shortkey per Extension –

0

So che non è esattamente la stessa cosa, ma non è possibile iniettare un iframe nella pagina con la fonte del popup e interagire con esso per il test?

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