Selenium Webdriver - 在启动浏览器时需要启用Chrome扩展程序

4
我正在使用以下代码来获得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个回答

2
你可以参考这篇文档来了解如何使用扩展程序启动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);

}
}

附加参考资料:

2
谢谢@abielita的回答,但对我没用。 - Saba Malik

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也可能因扩展而异...

然后,您可以通过与普通网页相同的方式与扩展进行交互(假设此功能“features”)来测试您的扩展。

C)互动

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

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

虽然这并不能完全回答你的问题,但是希望在您自己的测试和扩展方面能够作为一个有用的指南!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接