Получать доступ и обрабатывать всплывающее окно с расширением Chrome с помощью веб-драйвера Selen - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь установить расширение IBM DAP chrome с помощью веб-драйвера Selenium.У меня нет доступа к файлу crx.Итак, я попытался установить его непосредственно через веб-магазин Chrome для плагинов как:

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()

, но этот код не имеет доступа к всплывающему окну и не может нажать кнопку «Добавить расширение».Как получить доступ к всплывающему окну и нажать «Добавить расширение»?

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Следуя решению @Navarasu, я скопировал файл pyrobot.py из здесь .Это прекрасно сработало для меня.

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')
0 голосов
/ 17 октября 2018

Это не предупреждение javascipt.Это не может быть обработано с помощью Selenium Alert.Это родное окно, связанное с ОС, похожее на окно загрузки файла.

В Java мы можем использовать класс Robot для симуляции keyevent, чтобы справиться с этим.

Если это Windows OS, мы можем использовать скрипт AutoIt для обработки всплывающего окна.Пожалуйста, обратитесь этот пост для автоматического использования .Это исполняемый файл и может быть выполнен на любом языке.

Я пробовал в Java с использованием класса роботов, и это работает для меня.

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']")));
    }
}
...