The more robust FirefoxProfile.add_extension() method would side-step those issues, but it only supports the now-deprecated extension formats. Support was added very recently added to the Python client for installing addons using GeckoDriver’s addon manager, but this only supports installing packaged extensions and unsigned extensions can only be installed for a single session. That’s why it’s a bit disappointing that Selenium still has only partial support for running Firefox with WebExtensions years after Mozilla announced the transition. If you want to run or test a cross-browser WebExtension, then using a cross-browser automation framework is a must. Selenium might not be the new kid on the block these days, but it has some of the best cross-browser support out there. One such example is Selenium, one of the handiest browser automation frameworks out there for UI testing and web scraping.
The browser support is still a bit mixed, and some common the tooling only supports deprecated Firefox add-on formats. Unfortunately, while the future may already be here–it’s not very evenly distributed. You can now write extensions that pretty much run out of the box in Chrome, Edge, Firefox, Firefox for Android, and Opera. That was an extremely exciting idea and one that would ultimately prove positive for both developers and users.įast forward a couple years and we’re living that future. The Mozilla announcement was the first glimpse of a future where there would be a single standardized API for writing extensions that could run in any browser. Writing cross-browser extensions had previously been an absolutely miserable experience, and many developers understandably chose to only target Chrome due to its market share and relatively pleasant API. There were some vocal critics of this shift because it meant that some existing add-ons would be discontinued, but this was tremendously positive news for add-on and extension developers. In 2015, Mozilla announced that they would be deprecating XPCOM and XUL based addons in favor of their new WebExtensions API based on the Google Chrome Extension API.