javascript - Chrome 扩展未在 Selenium JavaScript Webdriver 测试中运行
问题描述
我有一个按预期工作的 Selenium JavaScript Webdriver 测试,没有给出任何错误,除了应该更改页面标题然后获取 cookie 的 Chrome 扩展程序不起作用。当我在测试页面上手动运行扩展程序时,它按预期工作,所以我很确定问题是我如何调用扩展程序。
我确实有一个关于“二进制”chromeOption 的问题,从我查看的文档来看,它看起来只是包含扩展名的文件夹,但是那些相同的文档在 chromeOption 中的“扩展名”指向同一个文件文件夹。我到底应该在“二进制”中输入什么?
代码片段:
const path = require('path');
const chromePath = require('chromedriver').path;
const webdriver = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
const until = webdriver.until;
var chromeOptions = webdriver.Capabilities.chrome();
var service = new chrome.ServiceBuilder(chromePath).build();
chrome.setDefaultService(service);
var builder = new webdriver.Builder();
var options = new chrome.Options();
var preferences = new webdriver.logging.Preferences();
var driver;
preferences.setLevel(webdriver.logging.Type.BROWSER, webdriver.logging.Level.ALL);
options.setLoggingPrefs(preferences);
var extensionArray = [""];
async function AppTest() {
let driver = builder
.forBrowser('chrome')
.withCapabilities({
'browserName': 'chrome',
'chromeOptions':
{
binary:
// Folder containing a copy of the extension
'/Users/MyUserName/Desktop/Testing/chrome-extensions',
args: [],
// Local copy of the extension in the same folder as the test
extensions: ['./chrome-extension/extension-demo.crx']
}
})
.setChromeOptions(options)
.build();
// Tests
await driver.get('https://testURL.com');
await driver.manage().getCookie("test").then(function(cookie){
console.log("test", cookie);
});
await driver.quit();
}
解决方案
我不确定“二进制”键的用途,因为我从未遇到过它。
您可以在这篇文章中看到我是如何在 Java 中添加扩展的。关键是您不能按原样添加扩展名;它需要转换为base-64。
推荐阅读
- python - Flask Babelex 0.9.4 和 % 转义
- sql-server - 在 SQL Server 中更改 AE 加密文本列的大小
- python - PVLIB - 如何使用耦合逆变器正确定义系统规模
- amazon-web-services - S3在不同账户上的桶之间处理文件而不修改任何策略?
- gdb - 如何在更改时调试可执行文件
- html - 线性渐变渲染问题firefox
- tensorflow - Keras 多类分类 input_shape 大小问题
- dart - 多次加法后的飞镖双小数
- java - 在 android 上没有由网络与 hyperledger 应用程序提供的对等点
- anylogic - AnyLogic 的到达率是泊松分布吗?