Estoy tratando de instalar la extensión de Chrome de IBM DAP usando Selenium webdriver. No tengo acceso al archivo crx. Entonces, intenté instalarlo directamente a través de la tienda web de Chrome para complementos como:

browser = webdriver.Chrome()
browser.get('https://chrome.google.com/webstore/detail/dynamic-assessment-plugin/fnapgcgphlfhecijolobjodbbnjjpdga')
browser.maximize_window()
browser.implicitly_wait(5)
browser.find_element_by_css_selector("body > div.F-ia-k.S-ph.S-pb-qa > div.h-F-f-k.F-f-k > div > div > div.e-f-o > div.h-e-f-Ra-c.e-f-oh-Md-zb-k > div > div").click()
browser.switch_to_alert().accept()

Pero este código no accede a la ventana emergente y no puede hacer clic en el botón "Agregar extensión". ¿Cómo acceder a la ventana emergente y hacer clic en 'Agregar extensión'?

1
gd1 16 oct. 2018 a las 20:45

2 respuestas

La mejor respuesta

Siguiendo la solución de @Navarasu, copié el archivo pyrobot.py de aquí. Funcionó perfectamente bien para mí.

from pyrobot import Robot
from selenium import webdriver
import time

browser = webdriver.Chrome()
browser.get('https://chrome.google.com/webstore/detail/dynamic-assessment-plugin/fnapgcgphlfhecijolobjodbbnjjpdga')
browser.maximize_window()
browser.implicitly_wait(15)
browser.find_element_by_css_selector("[aria-label='Add to Chrome']").click()

time.sleep(3)
rob = Robot()
rob.key_press('tab')
rob.key_press('enter')
1
gd1 17 oct. 2018 a las 16:28

No es la alerta de JavaScript. No se puede manejar con Selenium Alert. Es una ventana relacionada con el sistema operativo nativo similar a la ventana de carga de archivos.

En Java, podemos usar la clase Robot para simular el evento clave para manejar esto.

Si es el sistema operativo Windows, podemos usar el script AutoIt para manejar la ventana emergente. Consulte esta publicación relacionada para el uso automático de TI. Este es un exe y se puede ejecutar en cualquier idioma.

Lo he intentado en Java usando la clase Robot y me está funcionando.

import io.github.bonigarcia.wdm.ChromeDriverManager;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.io.IOException;

public class InstallChromeExtention {
    public static void main(String[] args) throws IOException, AWTException, InterruptedException {
        ChromeDriverManager.getInstance().setup();
        WebDriver driver = new ChromeDriver();
        driver.get("https://chrome.google.com/webstore/detail/google-keep-chrome-extens/lpcaedmchfhocbbapmcbpinfpgnhiddi");
        WebDriverWait wait = new WebDriverWait(driver, 60);
        WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("[aria-label='Add to Chrome']")));
        element.click();
        Thread.sleep(5000);
        Robot robot = new Robot();
        robot.keyPress(KeyEvent.VK_TAB);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_ENTER);
        Thread.sleep(500);
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("[aria-label='Remove from Chrome']")));
    }
}
1
Navarasu 17 oct. 2018 a las 00:06