Javascript 在Selenium Python中禁用图像
因为Webdriver在进入下一行之前会等待整个页面加载,所以我认为禁用图像、css和javascript会加快速度Javascript 在Selenium Python中禁用图像,javascript,python,css,selenium,selenium-webdriver,php,Javascript,Python,Css,Selenium,Selenium Webdriver,Php,因为Webdriver在进入下一行之前会等待整个页面加载,所以我认为禁用图像、css和javascript会加快速度 from selenium import webdriver from selenium.webdriver.firefox.firefox_profile import FirefoxProfile def disableImages(self): ## get the Firefox profile object firefoxProfile = Firef
from selenium import webdriver
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
def disableImages(self):
## get the Firefox profile object
firefoxProfile = FirefoxProfile()
## Disable CSS
firefoxProfile.set_preference('permissions.default.stylesheet', 2)
## Disable images
firefoxProfile.set_preference('permissions.default.image', 2)
## Disable Flash
firefoxProfile.set_preference('dom.ipc.plugins.enabled.libflashplayer.so',
'false')
## Set the modified profile while creating the browser object
self.browserHandle = webdriver.Firefox(firefoxProfile)
我从stackoverflow那里得到了密码
但当我加上
driver = webdriver.Firefox()
driver.get("http://www.stackoverflow.com/")
最后,它仍然加载图像://p>更新:答案可能不再有效,并且无法更改。请尝试使用quickjava
扩展名(链接到)
您需要将
firefox\u profile
实例传递给webdriver
构造函数:
from selenium import webdriver
firefox_profile = webdriver.FirefoxProfile()
firefox_profile.set_preference('permissions.default.stylesheet', 2)
firefox_profile.set_preference('permissions.default.image', 2)
firefox_profile.set_preference('dom.ipc.plugins.enabled.libflashplayer.so', 'false')
driver = webdriver.Firefox(firefox_profile=firefox_profile)
driver.get('http://www.stackoverflow.com/')
driver.close()
这就是它的显示方式:
不幸的是,
firefox\u profile.set\u preference('permissions.default.image',2)
选项将不再适用于禁用最新版本firefox的图像-[原因请参见Alecxe对我的问题的回答]
我的最佳解决方案是使用firefox扩展quickjava,它可以禁用图像-
我的Python代码:
from selenium import webdriver
firefox_profile = webdriver.FirefoxProfile()
firefox_profile.add_extension(folder_xpi_file_saved_in + "\\quickjava-2.0.6-fx.xpi")
firefox_profile.set_preference("thatoneguydotnet.QuickJava.curVersion", "2.0.6.1") ## Prevents loading the 'thank you for installing screen'
firefox_profile.set_preference("thatoneguydotnet.QuickJava.startupStatus.Images", 2) ## Turns images off
firefox_profile.set_preference("thatoneguydotnet.QuickJava.startupStatus.AnimatedImage", 2) ## Turns animated images off
driver = webdriver.Firefox(firefox_profile)
driver.get(web_address_desired)
其他功能也可以通过添加行来关闭:
firefox_profile.set_preference("thatoneguydotnet.QuickJava.startupStatus.CSS", 2) ## CSS
firefox_profile.set_preference("thatoneguydotnet.QuickJava.startupStatus.Cookies", 2) ## Cookies
firefox_profile.set_preference("thatoneguydotnet.QuickJava.startupStatus.Flash", 2) ## Flash
firefox_profile.set_preference("thatoneguydotnet.QuickJava.startupStatus.Java", 2) ## Java
firefox_profile.set_preference("thatoneguydotnet.QuickJava.startupStatus.JavaScript", 2) ## JavaScript
firefox_profile.set_preference("thatoneguydotnet.QuickJava.startupStatus.Silverlight", 2) ## Silverlight
我知道这是一个问题,但它帮助了我。(搜索引擎中的第一个搜索结果为php webdriver禁用javascript
)
我想我应该发布我的代码(修改版本的@kyreniaanswer for)来帮助其他人启动和运行
安装一切
用法
使用Facebook\WebDriver\Firefox\FirefoxProfile;
使用Facebook\WebDriver\Firefox\FirefoxDriver;
使用Facebook\WebDriver\Remote\DesiredCapabilities;
使用Facebook\WebDriver\Remote\RemoteWebDriver;
//将此更改为xpi的路径
$extensionPath=$this->container->getParameter('kernel.root_dir')。/../bin/selenium/quickjava-2.0.6-fx.xpi';
//构建我们的firefox配置文件
$profile=新的FirefoxProfile();
$profile->addExtension($extensionPath);
$profile->setPreference('thatonegydotnet.QuickJava.curVersion','2.0.6.1');
$profile->setPreference('thatonegydotnet.QuickJava.startupStatus.Images',2);
$profile->setPreference('thatonegydotnet.QuickJava.startupStatus.AnimatedImage',2);
$profile->setPreference('thatonegydotnet.QuickJava.startupStatus.CSS',2);
//$profile->setPreference('thatonegydotnet.QuickJava.startupStatus.Cookies',2);
$profile->setPreference('thatonegydotnet.QuickJava.startupStatus.Flash',2);
$profile->setPreference('thatonegydotnet.QuickJava.startupStatus.Java',2);
//$profile->setPreference('thatonegydotnet.QuickJava.startupStatus.JavaScript',2);
$profile->setPreference(“thatonegydotnet.QuickJava.startupStatus.Silverlight”,2);
//创建DC
$dc=DesiredCapabilities::firefox();
$dc->setCapability(FirefoxDriver::PROFILE,$PROFILE);
//创建我们的新驱动程序
$driver=RemoteWebDriver::create($host,$dc);
$driver->get($driver)http://stackoverflow.com');
//HTML源代码
$html=$driver->getPageSource();
//Firefox应该是打开的,你可以看到没有图像或css被加载
在此处查看更多首选项设置:
被接受的答案对我也不适用。从kyrenia提到的“原因”链接中,我得知Firefox在第一次启动时会覆盖“permissions.default.image”首选项,我可以通过以下操作来防止这种情况:
# Arbitrarily high number
profile.set_preference('browser.migration.version', 9001)
这似乎没什么问题,因为我在每次启动驱动程序时都创建了配置文件,所以实际上没有要迁移的内容。不幸的是,这个答案不再有效,因为firefox不再允许更改
默认.image
值-多亏alecxe为我指明了正确的方向-我要解决的代码如下。@kyrenia真的吗?我有Firefox 41,但仍然可以使用。@erm3nda-这肯定是我在[2015]7月左右遇到的一个问题,可能是Firefox 39-如果不再适用,那么通过Firefox\u配置文件禁用。set\u首选项('permissions.default.image',2)
显然是一个更干净的解决方案。因为很明显,我对它进行了评论。。。一些懒惰的读者会认为使用扩展甚至不用尝试就更好了;Pinteresing Java扩展:我从来没有见过它。这应该是最好的答案!谢谢,这对我帮助很大。我不得不使用2.0.6
version。最新版本(2.0.7
)引发了一个AddonFormatError
异常。这似乎与清单文件有关,但两者都是相同的。设置权限。默认值。image
在Firefox 66.0.5上适用于我。我添加了image Block X,效果很好:)