selenium3.0不兼容火狐的解决方案

当直接调用火狐出现不兼容错误时,如何解决?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)

好了,解决掉以上问题 配置环境调用浏览器问题应该就彻底解决了吧。 

相关文章
相关标签/搜索