曲折的WebDriver环境搭建(selenium WebDriver eclipse 环境搭建)

   最近沉迷于上课,各种奔波于课上和在去上课的的路上,最酸爽的还是在慢慢的课程之中穿插上一两门考试,就这个feel就是相当的让人不想再次体验。好不容易考完试,结果为了复习而欠下的各种实验课的的作业又成了一大笔“账单”。


    今天在进行还债的时候,刚好翻到软件测试测试的实验,实验题目是通过脚本使用自动化测试工具测试。

   在这里我们使用的工具是selenium + junit,本来看着这样的操作,刚开始感觉挺简单的,于是就开始随性的自己按照自己的想法开始配置环境,然后结果就是——你小瞧他,它就刁难你。然后一不小心一个下午就在环境的配置中悄然流逝。


   好吧,废话就不多说啦,我们直接开始进行环境配置吧。


一、下载浏览器

    在这里我们使用的是FireFox浏览器,在使用的时候需要注意,所用的firefox版本不能太高也不能太低,版本太高就比如,Firefox 57的版本就不支持selenium。(实验表明,无论是在Firefox的官方插件库,还是selenium的官网上,都直接显示不支持,,,),现在我使用的是Firefox 56.0.2 完全可以使用并且能够成功运行。

firefox

此版本过高…


   然后下载完浏览器之后,我们需要将Firefox配置到环境变量中,这样就能使得工具能够直接打开Firefox,具体的操作就是找到Firefox的安装目录,并将Firefox的安装目录的路径复制,然后在环境变量的Path中添加一行,将FireFox的安装路径粘贴,然后保存就好。

   如果环境变量配置成功,那么直接打开cmd,向其中输入firefox就能直接打开Firefox浏览器。

   大家也可以根据这个博客(http://blog.163.com/wxiaoch_0904/blog/static/96091031201352134033340/)设置一下,让Firefox成为测试专用的版本。

二、安装selenium工具

   这一步,直接在在火狐的插件库中搜索selenium builder然后点击安装,并重启浏览器,就可以直接使用了。

add-on

三、下载geckoDriver

   下载这个驱动的原因是因为在Selenium升级成3.x之后,我们必须下载geckoDriver这个驱动,然后通过这个驱动来将火狐浏览器启动。

   对于selenium3.x,他支持了一些新的特性,主要有以下几点:

    1. 去掉了对selenium rc的支持,标志着webdriver协议最终完成大一统;
    2. 全面支持java8,如果需要使用selenium和Java binding,就必须使用java 8.
    3. 对于火狐来说,Mozilla官方通过geckodriver来支持firefox。
    4. 支持macOS
    5. 通过Microsoft瓜房的webdriver server支持Edge浏览器
    6. 只支持ie 9.0版本及以上


    因此,鉴于我这边使用的selenium是相当新的selenium-3.6,因此我们需要通过geckodriver来对火狐浏览器进行启动。

    下载地址:https://github.com/mozilla/geckodriver/

    同时,注意这个下载完成之后,也需要将它配置到环境变量中。

四、实例运行

    看样子,我们在上面的几个步骤上已经将大致的准备工作全部完成了。那么现在我们就开始通过一个实例进行网页的检验。


(一)使用selenium builder来录制我们的点击事件

    我们在下载并安装火狐之后,安装了selenium builder插件,那么我们现在开始使用这个插件进行操作的录制。

    那么我们首先将火狐打开到我们想要测试的网页上,比如说京东(jd.com),然后点击开发者 –> Launch Selenium Builder,然后待测的网页就会自动添加到我们的输入框中,然后点击Record按钮,就可以开始进行操作的录制:

pic2
pic1

   我们可以明显的发现,我们的操作已经全部被录制上,那么我们停止录制,并通过以上的额file按钮选择导出,然后导出为java/junit文件。保存,那么我们就得到了一个测试用例。

/**
* @author Mica_Dai
* @modify_time 2017/11/5
* java test case
*/
import org.junit.After;
import org.junit.Before;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;

import java.util.concurrent.TimeUnit;
import java.util.Date;
import java.io.File;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.*;
import static org.openqa.selenium.OutputType.*;

public class jd {
    FirefoxDriver wd;

    @Before
    public void setUp() throws Exception {
        wd = new FirefoxDriver();
        wd.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
    }

    @Test
    public void jd() {
        wd.get("https://www.jd.com/");
        wd.findElement(By.xpath("//div[@id='header']/div")).click();
        wd.findElement(By.id("J-toolbar-load-hook")).click();
        wd.findElement(By.linkText("秒杀")).click();
        wd.findElement(By.cssSelector("span.ui-areamini-text")).click();
        wd.findElement(By.linkText("陕西")).click();
        wd.findElement(By.id("J-toolbar-load-hook")).click();
        wd.findElement(By.linkText("clarks休闲运动鞋")).click();
    }

    @After
    public void tearDown() {
        wd.quit();
    }

    public static boolean isAlertPresent(FirefoxDriver wd) {
        try {
            wd.switchTo().alert();
            return true;
        } catch (NoAlertPresentException e) {
            return false;
        }
    }
}


(二)创建java project

   我们已经获取测试用例的脚本,现在我们打开eclipse,然后创建一个新的java project。并向其中导入selenium-server-standalone-3.6.0.jar的包。然后将我们在上一步骤中得到的java文件导入到包内。


(三)运行脚本实现自动化

   为了运行这一程序,我们新建一个main函数。然后设置属性,使用geckodriver来启动火狐浏览器:

/**
* @author Mica_Dai
* @modify_time 2017/11/5
* java test case
*/
   public static void main(String[] args){
        System.out.println("hello");
        System.setProperty("webdriver.firefox.bin", "path of  firefox.exe");
        System.setProperty("webdriver.gecko.driver", "path of geckodriver.exe");
        test();
   }


   其中,以上的System.setProperty()的两个参数实际上是一个键值对,第一个参数是表示的环境变量,第二个参数就是两个软件实际在本机上的位置。


   貌似现在我们已经完全弄好了,实际上,我们现在还需要启动selenium服务:主要步骤就是直接进到selenium-server-standalone-3.3.1.jar所在的文件目录下,然后在该目录下打开命令行,向其中敲入:

java -jar selenium-server-standalone-3.3.1.jar

   然后我发现:

error

   命途多舛!还是没能打开,这怎么办呢,然后网上查找,得到了以下的结果:

一、错误现象:

   当改变了jdk版本时,在编译java时,会遇到Unsupported major.minor version错误。

   错误信息如下 :

Unsupported major.minor version 50.0
Unsupported major.minor version 49.0 (我在jdk1.4 和1.5切换时就遇到了这个错误)
Unsupported major.minor version 48.0

二、错误原因:

   类似错误均属于Java版本问题,即JDK版本过低,只要选择相对应的JDK版本编译即可。

   48,49,50是Java编译器内部的版本号:

Unsupported major.minor version 50.0 对应于 JDK1.6(JRE1.6)
Unsupported major.minor version 49.0 对应于 JDK1.5(JRE1.5)
Unsupported major.minor version 48.0 对应于 JDK1.4(JRE1.4)


   什么???java版本不对????

   我现在就是真的很难受,前一次测试课,实验内容要求使用java1.7,然后刚将自己电脑中的java1.8完全卸载!!!!现在同一堂课,竟然又要使用java1.8!!!!哎,没什么办法,只能下载啦——

   然后,下载并配置好环境之后重新启动:

pass

   好啦一切正常,然后再次点击运行java代码,然后就可以看到浏览器自动就开始执行我们录制的脚本啦。

   以上。


参考了以下的文档:

http://blog.csdn.net/pengbin790000/article/details/76696714
https://github.com/mozilla/geckodriver/
http://blog.csdn.net/xinyuehuixin/article/details/70169725
http://www.oschina.net/question/207494_84715

发布了24 篇原创文章 · 获赞 32 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_36752072/article/details/78453486