selenium3.0不兼容火狐的解决方案
当直接调用火狐出现不兼容错误时,如何解决?
详看Message中提示:Expected browser binary location,but unable to find binary in default location,大概意思就是说寻找不到binary。
总的结果来说,selenium3.0不支持firefox默认的driver了,但是在selenium2.x版本是可以支持的,这就是差异,
到http://www.assertselenium.com/selenium-3/firefoxdriver-in-selenium-3/地址我们可以获取到我们想要的信息
依据如上的信息,可以看到,selenium3.0在firefox浏览器中提供了GeckDriver,需要使用它,也就是说之前的默认自带的driver在selenium30.已经不能使用了,需要使用GeckDriver,GeckDriver代替了之前的自带默认的driver,这样的好处是每个浏览器都可以自己开发driver,来适配selenium3.0来进行自动化的测试,接着继续往下看,可以看到,提供了GeckDriver的下载地址,见原文
---------------------------------------------------------------------------------------------------------------------
以上为分析废话,具体步骤如下:
①下载GeckDriver https://github.com/mozilla/geckodriver/releases
记住根据自己电脑的环境来下载哦
② 把GeckDriver在该地址下载后,解压得到geckodriver.exe文件,把它加入到环境变量 (如我放在之前设置好的环境变量目录 c:\python35)
③ 接着想使用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)
好了,解决掉以上问题 配置环境调用浏览器问题应该就完全解决了吧。