如何从Selenium脚本获取Firefox Web Extension的“内部UUID”?

时间:2019-05-24 08:11:36

标签: python selenium firefox firefox-webextensions

在我的Selenium脚本启动后,我需要打开moz-extension://internal-uuid页面以访问扩展程序的storage API,以在其中设置一些首选项,以便该扩展程序稍后读取并用于执行某些操作。但是,当我使用selenium.webdriver.Firefox.add_addon(...)时,它返回的Extension ID是不同的,不能用来打开moz-extension://页面。有什么方法可以从我的代码中获得此Internal UUID(不是通过检查about:debugging#addons手动获得)。或者是将我需要的数据从Selenium传递到Web Extension的某种方法?

2 个答案:

答案 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文件中设置该插件