selenium设置:浏览器不显示图片

想解决的问题:
跑selenium脚本时,会运行浏览器,浏览器会显示图片,而出于效率或者其他方面的考虑,我们并不希望显示图片。那这里怎么做呢?本文会向大家介绍方法,并且触类旁通,通过本文的办法,你会知道,怎么自定义浏览器的其他属性。

一、chrome driver是否设置浏览器属性
chrome driver是否支持对浏览器属性的定义?答案当然是YES
通过chrome driver的官方文档( http://code.google.com/p/chromedriver/wiki/CapabilitiesAndSwitches),可以看到,chrome driver可以支持的自定义属性,相当可观

注意到红框中的部分,这里说明,我们可以去定义chrome浏览器的原生属性,这些属性是保存在chrome的用户数据文件夹中的Preferences文件中的,只要是这个文件中定义的属性,我们都可以让chrome driver对其做重新设置。我们初步判断,“不加载图片“这一设置,是保存在这个文件中的,因此,接下来需要知道,在这个文件中,是怎么保存”不加载图片“这个属性的。


二、“不加载图片”对应preferences文件中哪个属性
1、找到Preferences
Preferences文件,一般位于用户文件夹\AppData\Local\Google\Chrome\User Data\Default,如下图所示


2、通过浏览器设置”不显示图片“
打开你的chrome浏览器,进入“设置”页面,选“显示高级设置”


3、对比设置前后Preferences的区别
做了这个修改后,会发现Preferences多了红框这几行,因此这几行配置,对应了“不显示图片”这个配置


三、初始化chrome driver(代码)
通过前面两个步骤,我们已经知道了,chrome是怎么在Preferences中保存配置的,下面就是将这个配置变成代码:在初始化WebDriver时,带上这个配置。
代码如下所示。要注意到,map中的值,是要和Preferences中的层级相对应的。
1、default_content_setting是在profile配置组中的,因此表达式是profile.default_content_settings
2、default_content_settings中imges是key值,2是value值

Map<String, Object> contentSettings = new HashMap<String, Object>();
contentSettings.put("images", 2);

Map<String, Object> preferences = new HashMap<String, Object>();
preferences.put("profile.default_content_settings", contentSettings);

DesiredCapabilities caps = DesiredCapabilities.chrome();
caps.setCapability("chrome.prefs", preferences);
WebDriver driver = new ChromeDriver(caps);

总结:本文虽然是介绍了“不显示图片”的方法,但chrome的其他属性,也可以通过同样的思路去设置。怎么样~!让我们更加灵活、自由地使用selenium把!

不同版本的chrome driver,使用上可能存在差异,这里提供我使用的chrome driver:
http://pan.baidu.com/share/link?shareid=2940223438&uk=1375814196

如果你对selenium不熟,欢迎查看旧文:《Selenium超简单入门》


  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
设置启动选项以避免验证码登录,可以尝试以下几个步骤: 1. 设置浏览器选项 使用Selenium启动浏览器时,您可以设置浏览器选项,例如禁用图片加载、禁用JavaScript等。这些选项可能有助于减少需要验证码的情况。 例如,以下代码将禁用Chrome浏览器图片加载和JavaScript: ``` from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument('--disable-gpu') options.add_argument('--disable-extensions') options.add_argument('--disable-infobars') options.add_argument('--disable-dev-shm-usage') options.add_argument('--no-sandbox') options.add_argument('--disable-popup-blocking') options.add_argument('--disable-default-apps') options.add_argument('--disable-translate') options.add_argument('--disable-web-security') options.add_argument('--disable-features=IsolateOrigins,site-per-process') options.add_argument('--blink-settings=imagesEnabled=false') options.add_argument('--disable-javascript') driver = webdriver.Chrome(chrome_options=options) ``` 2. 尝试登录前删除Cookie 如果网站使用Cookie来识别用户并显示验证码,您可以尝试在每次登录之前删除Cookie。这将模拟每次新用户登录网站的情况,从而避免验证码。 ``` driver.delete_all_cookies() ``` 3. 尝试使用代理IP 有些网站会通过IP地址来识别用户并显示验证码。您可以尝试使用代理IP来避免这种情况。 例如,以下代码将使用代理IP启动Chrome浏览器: ``` from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument('--proxy-server=http://your-proxy-ip:your-proxy-port') driver = webdriver.Chrome(chrome_options=options) ``` 请注意,代理IP可能需要付费购买,而且速度可能较慢。建议仅在必要时使用代理IP。 总之,在使用Selenium登录网站时,您可以尝试上述方法来避免验证码登录。但是,请注意,如果网站具有强大的反爬虫保护机制,这些方法可能无法奏效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值