簡體   English   中英

在Selenium Python中禁用圖像

[英]Disable images in Selenium Python

因為Webdriver在進入下一行之前等待整個頁面加載,我認為禁用圖像,css和javascript會加快速度。

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獲取代碼不希望加載圖像和使用Python在Selenium WebDriver測試中在Firefox上渲染CSS

但是當我補充說

driver = webdriver.Firefox()
driver.get("http://www.stackoverflow.com/")

到最后,它仍然加載圖像:/

不幸的是,選項firefox_profile.set_preference('permissions.default.image', 2)將不再用於使用最新版本的Firefox禁用圖像 - [原因見Alecxe對我的問題的回答無法關閉Selenium / Firefox中的圖像 ]

我最好的解決方案是使用firefox擴展quickjava,其中包括禁用圖像 - https://addons.mozilla.org/en-us/firefox/addon/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

更新 :答案可能不再有效,因為permissions.default.image變為凍結設置且無法更改。 請嘗試使用quickjava擴展(鏈接到答案 )。


您需要將firefox_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()

這就是它的顯示方式:

在此輸入圖像描述

接受的答案對我也不起作用。 從kyrenia提到的“原因”鏈接我收集到Firefox在第一次啟動時覆蓋了“permissions.default.image”首選項,我可以通過執行以下操作來阻止:

# Arbitrarily high number
profile.set_preference('browser.migration.version', 9001)

這似乎沒問題,因為我在每個驅動程序啟動時創建配置文件,因此實際上沒有任何實際遷移。

我知道這是一個問題,但它幫助我用facebook / php-webdriver (第一個結果在搜索引擎的php webdriver disable javascript

我以為我會發布我的代碼(改變版本的@kyrenia回答 )來幫助其他人起床和運行。


安裝一切

  1. 下載並安裝facebook / php-webdriver composer require facebook/webdriver

  2. 下載Selenium並啟動它。 java -jar selenium-server-standalone-#.jar

  3. 下載Quick Java並將其放入項目目錄中。


用法

use Facebook\WebDriver\Firefox\FirefoxProfile;
use Facebook\WebDriver\Firefox\FirefoxDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;

// Change this to the path of you xpi
$extensionPath = $this->container->getParameter('kernel.root_dir').'/../bin/selenium/quickjava-2.0.6-fx.xpi';

// Build our firefox profile
$profile = new FirefoxProfile();
$profile->addExtension($extensionPath);
$profile->setPreference('thatoneguydotnet.QuickJava.curVersion', '2.0.6.1');
$profile->setPreference('thatoneguydotnet.QuickJava.startupStatus.Images', 2);
$profile->setPreference('thatoneguydotnet.QuickJava.startupStatus.AnimatedImage', 2);
$profile->setPreference('thatoneguydotnet.QuickJava.startupStatus.CSS', 2);
//$profile->setPreference('thatoneguydotnet.QuickJava.startupStatus.Cookies', 2);
$profile->setPreference('thatoneguydotnet.QuickJava.startupStatus.Flash', 2);
$profile->setPreference('thatoneguydotnet.QuickJava.startupStatus.Java', 2);
//$profile->setPreference('thatoneguydotnet.QuickJava.startupStatus.JavaScript', 2);
$profile->setPreference("thatoneguydotnet.QuickJava.startupStatus.Silverlight", 2);

// Create DC
$dc = DesiredCapabilities::firefox();
$dc->setCapability(FirefoxDriver::PROFILE, $profile);

// Create our new driver
$driver = RemoteWebDriver::create($host, $dc);
$driver->get('http://stackoverflow.com');

// The HTML Source code
$html = $driver->getPageSource();

// Firefox should be open and you can see no images or css was loaded

在此處查看更多偏好設置: https//github.com/ThatOneGuyDotNet/QuickJava/blob/master/defaults/preferences/defaults.js

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM