美文网首页
Selenium+FireFox+Java 搭建与版本选择

Selenium+FireFox+Java 搭建与版本选择

作者: 不会逃跑的木头人 | 来源:发表于2018-07-30 18:35 被阅读0次

    1 浏览器驱动下载与安装

    1.1 下载地址

    a. chrome

    下载之前,先检查自己浏览器的版本,根据浏览器版本选择Driver的版本。最新的几个版本对应如下。

    chrome chromeDriver
    v66-68 v2.40 v2.39
    v65-67 v2.38
    v64-66 v2.37
    v63-65 v2.36
    v62-64 v2.35
    v61-63 v2.34
    v60-62 v2.33
    v59-61 v2.32
    v58-60 v2.31

    ChromeDriver官网无法访问,镜像下载地址:

    http://npm.taobao.org/mirrors/chromedriver/
    

    b. Firefox

    火狐浏览器驱动下载地址:

    https://github.com/mozilla/geckodriver/releases/
    

    在下载页面找到这样一句话,指出了geckodriver对应的浏览器版本。

    • Geckodriver 0.21.0 needs
      • Firefox 57 (and greater)
      • Selenium 3.11 (and greater)

    请大家在在下之前阅读文档,根据自己的系统选择相应的版本下载。

    1.2 驱动安装

    两种方式:

    1、把最新的geckodriver.exe放到java安装目录/bin目录下,在代码中定义:

    WebDriver driver = new FirefoxDriver();
    

    2、如果geckodriver.exe放置在一个任意目录,比如 c:\webdriver\geckodriver.exe,然后代码中定义:

     String firefoxdriver = "c:\\webdriver\\geckodriver.exe";
     System.setProperty("webdriver.gecko.driver",firefoxdriver);
     WebDriver driver = new FirefoxDriver(); 
    

    2 selenium安装

    建议使用maven,依赖:

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.3.1</version>
    </dependency>
    

    3 版本冲突

    选择版本前,强烈建议阅读下载Geckodriver页面的官方说明,指出了版本选择的规则。能少很多走弯路。
    这里,笔者贴出自己搭建时候遇到的问题,供大家参考。

    3.1 JDK 1.7.0_67 + FireFox 61.0.1 + geckodriver 0.21.0 + selenium 3.3.1

    异常:执行代码的jdk版本低于编译的jdk版本

    Exception in thread "main" java.lang.UnsupportedClassVersionError: org/openqa/selenium/WebDriver : Unsupported major.minor version 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:190)
        at com.intellij.rt.execution.application.AppMain.main(AppMain.java:122)
    

    3.2 JDK 1.8.0_131 + FireFox 61.0.1 + geckodriver 0.21.0 + selenium 3.3.1

    升级了JDK版本,依然报异常:

    Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session. desired capabilities = Capabilities [{moz:firefoxOptions={binary=Optional.empty, args=[], legacy=null, logLevel=null, prefs={}, profile=null}}], required capabilities = Capabilities [{moz:firefoxOptions={binary=Optional.empty, args=[], legacy=null, logLevel=null, prefs={}, profile=null}}]
    Build info: version: '3.3.1', revision: '5234b325d5', time: '2017-03-10 09:10:29 +0000'
    System info: host: 'JRA11379A282DD', ip: '10.9.1.30', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_131'
    Driver info: driver.version: FirefoxDriver
        at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)
        at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:141)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:604)
        at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:244)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
        at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:218)
        at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:125)
        at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:121)
    
    

    3.3 JDK 1.8.0_131 + FireFox 61.0.1 + geckodriver 0.21.0 + selenium 3.11.0

    可用版本

    在该配置下,笔者采用的chrome版本为v68,chromeDriver版本为v2.40

    根据官方文档,总结版本选择规则:

    • Geckodriver 0.21.0 needs
      • Firefox 57 (and greater)
      • Selenium 3.11 (and greater)
    • selenium 3.0 needs java 8(and greater)

    4 引入testNG测试框架

    • maven依赖
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.8.21</version>
    </dependency>
    
    • 注意事项:
    1. 测试方法上面必须使用@Test注解进行修饰。
    2. 测试方法必须使用public void 进行修饰,不能带有任何参数。
    3. 方法名不需要以test作为前缀,但是建议测试类使用Test做为类名的后缀,测试方法使用test作为方法名的前缀。

    在测试中遇到No tests were found以及empty test suite的报错,查了很久才发现方法使用了private进行修饰,找不到方法

    更多信息,前往笑笑的blog

    相关文章

      网友评论

          本文标题:Selenium+FireFox+Java 搭建与版本选择

          本文链接:https://www.haomeiwen.com/subject/bixqvftx.html