selenium安装后的避坑指南

1、selenium.common.exceptions.WebDriverException: Message: ‘geckodriver’ executable needs to be in PATH

安装selenuim后,在python中引用,提示报错:selenium.common.exceptions.WebDriverException: Message: ‘geckodriver’ executable needs to be in PATH,这个只是说缺少浏览器驱动需要下载对应的浏览器驱动。我的平台是rhel7,浏览器为firefox,下载驱动的地址:https://github.com/mozilla/geckodriver/releases,在该网页中选择和本机相同的系统版本即可。下载完成后,解压文件提取到geckdriver,这时需要注意,可以将该文件直接放置在/usr/bin目录下,也可以在/etc下PATH添加该文件所在的路径,选择一种方式即可,这个问题应该可以解决。本人没有试过chrome的驱动,据说比较麻烦。个人理解:该驱动就像一座桥梁连接着selenium和系统,python调用selenium模块,而selenium模块通过geckdriver调用系统中的浏览器。

2、AttributeError: ‘WebDriver’ object has no attribute ‘set_preference’

这个问题的原因在于没有搞清楚webdriver.FirefoxProfile()和webdriver.Firefox()的区别,前者用于设置个人在使用浏览器时的一些专有的操作(包括用户名密码、是否加载css…),详细介绍的网页firefoxprofile介绍;后者用于调用系统的浏览器,并进行操作,详细介绍网页。
回到标题的错误中来,假如看了以上文档,其实就知道错在哪里了。firefox()没有set_preference方法也就无法调用,自然报错,要想使用该方法来禁用网页的一部分内容,加快加载速度,必须通过firefoxprofile()方法,示例如下:

bw = webdriver.FirefoxProfile()
bw.set_preference('dom.ipc.plugins.enabled.libflashplayer.so', 'false')
brower = webdriver.Firefox(bw, options=options)
brower.get('http://fundf10.eastmoney.com/cyrjg_481010.html')

按照上面的方法,重新运行代码,应该可行。具体对于set_preference的参数的详解,后面有空再加。

你可能感兴趣的:(python,python)