selenium2在浏览器升级后,带来的坑

背景:以前自动化脚本是用的selenium2,fireFox,chrome,ie 浏览器都是成功运行的。最近发现,运行的时候,全都报错了。

经过一番学习,发现浏览器自动升级,导致原脚本运行报错。那么,想解决这个问题就只有两个方式了。

1、将各浏览器版本降低

2、将脚本中使用到的驱动等升级

我选择了升级驱动以及selenium。

 

我的chrome浏览器自动更新到:73.0.3683.103 , fireFox浏览器自动更新到:66.0.3

接下来就是我掉坑,爬坑的历程了。

  • 更新浏览器驱动

1、selenium2的时候,并不需要位firefox浏览器特别安装驱动,selenium2自带fireFox浏览器的驱动,所以针对火狐浏览器一开始觉得无法通过更新浏览器驱动来解决这个问题。所以就先尝试了将谷歌浏览器的驱动更新。

(2)下载谷歌浏览器版本对应的chromedriver; 每个版本下有个nodes.txt文件,里面有说明适用的谷歌浏览器版本

下载地址:http://chromedriver.storage.googleapis.com/index.html

(2)替换谷歌浏览器的驱动,然后再执行程序,发现问题依旧无法解决

  • 更新selenium2版本

通过百度发现,火狐浏览器超过46的版本,selenium2都无法支持了,所有得升级selenium版本,但具体升级到selenium3的那个版本呢?经过百度后,最终确定使用最新(selenium3.141.59)

(1)selenium官网上下载最新的版本,官网地址:https://docs.seleniumhq.org/

(2)将最新的selenium-server-standalone-3.141.59 替换我脚本中旧版本

(3)下载火狐浏览器对应版本的驱动geckodriver,下载地址:https://github.com/mozilla/geckodriver/releases

(4)selenium3版本必须使用jdk1.8

 

程序脚本如下:

谷歌浏览器

System.setProperty("webdriver.chrome.driver","D:\\drivers\\chromedriver.exe");
        ChromeOptions options = new ChromeOptions();
        options.addArguments("disable-infobars");
        //通过配置参数禁止data;的出现
        options.addArguments("--user-data-dir="+System.getProperties().getProperty("user.home")+"/AppData/Local/Google/Chrome/User Data/Default");
        //通过配置参数删除“您使用的是不受支持的命令行标记:--ignore-certificate-errors。稳定性和安全性会有所下降。”提示
        options.addArguments("--start-maximized","allow-running-insecure-content", "--test-type");
        WebDriver driver = new ChromeDriver(options);
        driver.get("https://www.imooc.com");
        driver.manage().window().maximize();

火狐浏览器

//火狐的安装位置
        System.setProperty("webdriver.firefox.bin","F:\\Program Files\\Mozilla Firefox\\firefox.exe");
        //加载驱动
       //System.setProperty("webdriver.firefox.marionette","D:\\drivers\\geckodriver.exe");
        System.setProperty("webdriver.gecko.driver","D:\\drivers\\geckodriver.exe");
        driver=new FirefoxDriver();
        driver.get("https://www.imooc.com");
        driver.manage().window().maximize();

使用火狐浏览器时,注意驱动的加载应使用:webdriver.gecko.driver,至此,谷歌和火狐浏览器能供重新启动了.

下图为selenium对应浏览器和驱动版本 以及 我个人使用的一些版本信息,

selenium2在浏览器升级后,带来的坑

 

selenium2在浏览器升级后,带来的坑