当直接调用火狐出现不兼容错误时,如何解决?python
详看Message中提示:Expected browser binary location,but unable to find binary in default location,大概意思就是说寻找不到binary。git
总的结果来讲,selenium3.0不支持firefox默认的driver了,可是在selenium2.x版本是能够支持的,这就是差别,github
到http://www.assertselenium.com/selenium-3/firefoxdriver-in-selenium-3/地址咱们能够获取到咱们想要的信息web
依据如上的信息,能够看到,selenium3.0在firefox浏览器中提供了GeckDriver,须要使用它,也就是说以前的默认自带的driver在selenium30.已经不能使用了,须要使用GeckDriver,GeckDriver代替了以前的自带默认的driver,这样的好处是每一个浏览器均可以本身开发driver,来适配selenium3.0来进行自动化的测试,接着继续往下看,能够看到,提供了GeckDriver的下载地址,见原文浏览器
---------------------------------------------------------------------------------------------------------------------函数
以上为分析废话,具体步骤以下:测试
①下载GeckDriver https://github.com/mozilla/geckodriver/releases
ui
记住根据本身电脑的环境来下载哦spa
② 把GeckDriver在该地址下载后,解压获得geckodriver.exe文件,把它加入到环境变量 (如我放在以前设置好的环境变量目录 c:\python35)firefox
③ 接着想使用GeckoDriver ,firefox浏览器必须是48或者更高版本。因而升级firefox,保障浏览器版本在48或者更高
④ 升级后,把binary加入进去,就能够正常的运行了,见执行的源码:
# -*- coding:utf-8 -*- from selenium import webdriver #导入webdriver包 from selenium.webdriver.firefox.firefox_binary import FirefoxBinary #导入friefox webdriver 包 import time #调入time函数 binary = FirefoxBinary("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe") #加入Firefox的路径 driver =webdriver.Firefox(firefox_binary=binary) #### 定义driver 要操控火狐浏览器 webdriver.firefox driver.get("http://www.baidu.com") time.sleep(0.3) #休眠0.3秒 driver.find_element_by_id("kw").send_keys("selenium") ####一个控件有若干属性id 、name、(也能够用其它方式定位),百度输入框的id 叫kw 我要在输入框里输入 selenium 。 driver.find_element_by_id("su").click() ####搜索的按钮的id 叫su ,我须要点一下按钮( click() )。 time.sleep(3) # 休眠3秒 print(driver.title) # 把页面title 打印出来 当没看到整个脚本执行过程时,看到打印出这句话,就说明页面被正确打开了 driver.quit() #退出并关闭窗口的每个相关的驱动程序 相似的表弟为 driver.close() # driver.close() #关闭当前窗口
------------------分析一下------------------------------
1.增长多了一句 from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
2.增长Firefox的路径
3.原来的直接调用driver=webdriver.firefox() 变成了 driver =webdriver.Firefox(firefox_binary=binary)
好了,解决掉以上问题 配置环境调用浏览器问题应该就彻底解决了吧。