Python Using Adblock with Selenium and Firefox Webdriver
Actually, Adblock Plus will add EasyList by default - but not if you set extensions.adblockplus.currentVersion
preference to disable update/first-run actions. I guess that your goal was preventing the first-run page from showing up but it also prevented data storage initialization. Note that you have more issues here: even if Adblock Plus adds EasyList, it will still take an unknown time to download.
The better course of action should be initializing your profile with an existing adblockplus/patterns.ini
file. You can get this file from your regular Firefox profile, with EasyList and other filter settings, and copy it to /Users/username/Downloads/profilemodel/adblockplus/patterns.ini
. Then the following should work:
ffprofile = webdriver.FirefoxProfile("/Users/username/Downloads/profilemodel");
There's a better way to do this:
1) extract adblock.xpi with 7-zip or equivalent
2) open /modules/AppIntegration.jsm with a regular text editor
3) find the function declaration for "notifyUser()", and replace this with a simple return. for example:
/*** function notifyUser()* {* let wrapper = (wrappers.length ? wrappers[0] : null);* if (wrapper && wrapper.addTab)* {* wrapper.addTab("chrome://adblockplus/content/ui/firstRun.xul");* }* else* {* Utils.windowWatcher.openWindow(wrapper ? wrapper.window : null,* "chrome://adblockplus/content/ui/firstRun.xul",* "_blank", "chrome,centerscreen,resizable,dialog=no", null);* }* }*/function notifyUser(){ return;}
Now you just need to package the files back into a zip, and change the extension from .zip to .xpi -- Voila!
This will stop adblock from loading the welcome page, but it will still configure the necessary subscription settings. Make sure NOT to call
ffprofile.set_preference("extensions.adblockplus.currentVersion", "x.x.x")
Otherwise, it will not know to "boot itself"
Please note that this is for adblock_plus-2.0.3 since I'm using firefox-17. The code may be slightly different, and in a different location for newer versions. See: https://issues.adblockplus.org/ticket/206#comment:5
I just recently found out how to block the first-run page without any issues by trial and error:
Go to the folder where your extension is located
In
lib/adblockplus.js
, setdefaults.suppress_first_run_page
totrue
instead offalse
.