在我的Selenium脚本启动后,我需要打开moz-extension://internal-uuid
页面以访问扩展程序的storage API
,以在其中设置一些首选项,以便该扩展程序稍后读取并用于执行某些操作。但是,当我使用selenium.webdriver.Firefox.add_addon(...)
时,它返回的Extension ID
是不同的,不能用来打开moz-extension://
页面。有什么方法可以从我的代码中获得此Internal UUID
(不是通过检查about:debugging#addons
手动获得)。或者是将我需要的数据从Selenium传递到Web Extension的某种方法?
答案 0 :(得分:1)
此代码在Linux和Mac上对我有效:
var ctx = document.getElementById('myChart').getContext('2d');
function getVal()
{
var val1 = document.getElementById('value1').value;
var val2 = document.getElementById('value2').value;
var val3 = document.getElementById('value3').value;
}
var chart = new Chart(ctx, {
// The type of chart we want to create
type: 'bar',
// The data for our dataset
data: {
labels: ['value1', 'value2', 'value3'],
datasets: [{
label: 'My First dataset',
backgroundColor: 'rgb(255, 99, 132)',
borderColor: 'rgb(255, 99, 132)',
data: [0, 10, 2, 20, 30, 45] <------ How can i pass val1,val2,val3 here data:[] is an object type
}]
},
});
答案 1 :(得分:0)
不知道如何,但是我无法让这种方法在python中工作,因此找到了另一种智能方法,而不是尝试获取Firefox不提供的首选项,您可以使用{{ 1}} API。然后就使用它。 这是我的代码的一部分
set-preference
firefoxUUID是您生成的随机UUID的字符串版本
并且必须将if self.webdriver != None:
return self.webdriver
extensionPath = curPath+'/../../packages/firefox.xpi';
cap = DesiredCapabilities().FIREFOX
cap["marionette"]=True;
profile = webdriver.firefox.firefox_profile.FirefoxProfile();
profile.set_preference('extensions.webextensions.uuids',json.dumps({'support@ipburger.com':firefoxUUID}))
self.webdriver = webdriver.Firefox(firefox_binary=firefoxBinary,capabilities=cap,executable_path=curPath+'/../../drivers/geckodriver',firefox_profile=profile);
self.webdriver.install_addon(extensionPath,temporary=True);
return self.webdriver;
替换为您的插件ID,您可以在manifest.json文件中设置该插件