Selenium Webdriver - 需要在启动浏览器时启用chrome扩展

时间:2018-02-24 21:28:46

标签: selenium-webdriver google-chrome-extension automated-tests

我使用以下代码获取chrome扩展程序(Browsec VPN)以打开并自动化必须在VPN上打开的特定站点 - 我的代码能够启动带扩展名的浏览器但扩展程序始终处于禁用模式 - 我需要在启用模式下启用它。请帮忙!谢谢

package AutomationTesting;

import java.io.File;

import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

public class Test1 {

    public static void main(String[] args) throws InterruptedException {
        // TODO Auto-generated method stub
 //WebDriver driver = null; 
 String URL = "https://google.com/";

 System.setProperty("webdriver.chrome.driver", "C:\\New_Selenium\\chromedriver_win32\\chromedriver.exe");

 ChromeDriver driver = new ChromeDriver();

ChromeOptions options = new ChromeOptions();
 options.addExtensions(new File("C:\\New_Selenium\\Browsec-VPN-Free-and-Unlimited-VPN_v3.19.4.crx"));
 //DesiredCapabilities capabilities = new DesiredCapabilities();
 //capabilities.setCapability(ChromeOptions.CAPABILITY, options);
driver = new ChromeDriver(options);
 driver.get(URL);

 driver.manage().window().maximize();
 Thread.sleep(2000); 

 driver.quit();

    }

}

2 个答案:

答案 0 :(得分:0)

您可以参考此documentation来了解如何启动带有扩展程序的Chrome浏览器。

1.使用自定义Chrome配置文件

  • 将所需的设置添加到Selenium代码:

下面:

public class TestClass {

WebDriver driver;


@Before
public void setUp() {

System.setProperty(“webdriver.chrome.driver”, “C:\\Selenium\\BrowserDrivers\\chromedriver.exe”);

ChromeOptions options = new ChromeOptions();

options.addArguments(“user-data-dir=C:\\Selenium\\BrowserProfile”);

options.addArguments(“–start-maximized”);

driver = new ChromeDriver(options);

}


@After
public void tearDown() {

driver.quit();

}


@Test
public void testScript() {

Thread.sleep(10000);

}
}

2.加载Chrome扩展程序

  • 将所需的设置添加到代码中:

下面:

public class TestClass {

WebDriver driver;


@Before
public void setUp() {

String pathToExtension = “C:\\Users\\home\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Extensions\\mbopgmdnpcbohhpnfglgohlbhfongabi\\2.3.1_0”;

ChromeOptions options = new ChromeOptions();

options.addArguments(“–load-extension=” + pathToExtension);

driver = new ChromeDriver(options);

}


@After
public void tearDown() {

driver.quit();

}


@Test
public void testScript() {

Thread.sleep(10000);

}
}

其他参考资料:

答案 1 :(得分:0)

警告

建议仅在测试您自己的扩展程序时执行此操作 - 即您有责任确保您不侵犯使用权 / 条款和条件 - 根据提供商的法律条款 / 期望等。

因此,下面的回答有点“通用”/在测试您自己的扩展的背景下 - 但是,对您感兴趣的元素进行了简要的考虑/探索,纯粹是出于学术/理论兴趣

总结

  1. 先决条件:安装了扩展程序的驱动程序
  2. 打开“chrome-extension://UNIQUE_ID/popup/popup.html”(这可能因扩展而异,请参阅下面 B 部分中的参考)
  3. 根据要求检查元素以进行测试。

代码/描述

(跳到 B-C 以了解您想要的部分)

A) 基础知识(导入、驱动程序、安装扩展)

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from os import path
path_core = os.path.join(os.path.expanduser("~"), 'Projects', 'Testing')
path_exec = os.path.join(path_core, "chromedriver.exe")
path_ext = os.path.join(path_core, 'extension.CRX')

注意:path_core、path_exec 和 path_ext 分别位于:您的代码、chromedriver.exe 文件和扩展名(您的扩展名为 crx)

o = Options()
o.add_extension(path_ext)
d = webdriver.Chrome(executable_path = path_exec, options = o)

应安装带有扩展程序的网页。

B) 作为网页打开弹出窗口

d.get('chrome-extension://UNIQUE_ID/popup/popup.html')

引用/基于:E. Shani - 其中 UNIQUE_ID 特定于扩展程序,popup/popup.html 也可能因扩展程序而异...

然后您可以通过与普通网页相同的方式与其交互来测试您的扩展程序(假设此功能为“特性”)

C) 互动

检查元素通常很简单 - 例如,我简要查看了您感兴趣的元素,并设法使用 JQuery/控制台找到它,如下所示:

document.querySelector('page-switch').shadowRoot.querySelector('main-index').shadowRoot.querySelector('c-switch')

感谢这并不能完全回答您的问题,但希望它可以作为您自己的测试/扩展的有用指南!