eclipse自动化需要哪些selenium的包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了eclipse自动化需要哪些selenium的包相关的知识,希望对你有一定的参考价值。

Selenium主要包含三个部分

1.Selenium IDE;

2.Selenium Server;

3.Selenium Client Drivers。

eclipse+appium搭建自动化环境

1.安装appium

我安装的是《AppiumForWindows-1.0.0.3》,这里需要主要的是,由于appium需要依赖于framework4.5的版本,所以想在windows XP上安装appium是不可以的,因为windows xp上最高只能安装framework4.0的版本。

appium需要先解压,我是解压到了C盘,然后便是安装。安装的时候,可以使用 npm install –g appium 命令来进行安装,也可以使用 npm --registry  http://registry.cnpmjs.org install -g appium 通过镜像的方式来连接。

2.下载并安装android_SDK_R22.6.1.exe到任意目录

我安装在C盘跟目录下,安装后会在C盘有C:\\android-sdk,安装好的目录结构如下。

安装好后,需要设置安卓的环境变量,具体如下。

ANDROID_HOME=C:\\android-sdk

PATH=%ANDROID_HOME%\\tools;%ANDROID_HOME%\\platform-tools;

当然JDK的环境变量也是要设置的,在这里就不多说了。

3.下载Eclipse IDE for Java Developers 

我下载的是4.4.1的版本,然后需要下载android的adt插件,下载后放到D:\\eclipse\\dropins\\ADT,其中ADT是自己建立的目录,里面放着,features和plugins,启动eclipse。

参考技术A 第一步 安装JDK
JDk1.7.
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
一路猛击‘下一步’,OK。安装完成后配置环境变量:
JAVA_HOME = E:\Java\Java\jdk1.7.0_15
PATH = %JAVA_HOME%\bin
CLASSPATH = .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
配置完环境变量后,CMD命令行输入:java -version,返回如下结果,则表示安装成功:

第二步 下载Eclipse
下载地址:http://www.eclipse.org/download/
最新的Eclipse Standard 4.3, 198 MB,下载的都是不用安装的,解压出来后直接用。

第三步 下载Selenium IDE、SeleniumRC、IEDriverServer
下载地址:http://www.seleniumhq.org/download/
  1、 Selenium IDE:selenium-ide-2.5.0.xpi 用来在Firefox上录制脚本。
  2、 Selenium RC:selenium-server-standalone-2.40.0.jar 模拟服务器端,selenium 1.0执行脚本时需要单独启动该jar包, selenium webdriver无需单独启动。
  3、 IEDriverServer:IEDriverServer_Win32_2.40.0.zip IE驱动
  

这里,我将下载得到的所有文件,全存放在E:\eclipse\selenium下面,方便管理:

第四步 下载Firefox

下载地址:http://www.firefox.com.cn/download/

下载得到文件:Firefox-latest.exe,最好是下载Firefox 25简体中文版,后续版本有人说通过Selenium会启动不了Firefox。

第五步 安装IDE、Firebug、Xpath checker、Xpath finder

安装完Firefox后,打开Firefox,把前面下载的selenium-ide-2.5.0xpi拖放到Firefox,弹出下图后,安装即可。

Firebug、Xpath checker、Xpath finder,打开firefox浏览器,选择工具――附加组件,打开附加组件管理器页面,搜索firebug、Xpath。
将查询到的firebug、xpath checker、xpath finder都装上,重启浏览器后生效:

SeleniumIDE、Firebug和xpath的用法,可以百度Selenium私房菜(新手入门教程).pdf,里面有很好的说明。

第六步 启动SeleniumRC
注意:selenium 1.0需要启动单独rc,webdriver则不需要启动。
启动seleniumRC的方法:
cmd命令行进入selenium-server-standalone-2.40.0.jar存放目录,输入如下命令
java -jar selenium-server-standalone-2.40.0.jar

为了方便,可以将启动命令写一个bat来执行,Run_selenium.bat,内容如下:
@echo off
cd E:\eclipse\selenium
E:
java -jar selenium-server-standalone-2.40.0.jar

第七步 Eclipse执行Selenium的Java实例
-----7.1
打开Eclipse,新建一个工程File—new—Java Project

-----7.2
输入工程名:Selenum,next

-----7.3
接下来,窗口进入Java Settings,选择Libraries,点击Addlibrary。
引用Junit4的Jar包(E:\eclipse\plugins\org.junit_4.11.0.v2XXXX)。
然后点击Add External Jars..,
引用Selenium相关的包(E:\eclipse\selenium),最终Libraries如下:

完成后,Java视图如下:

-----7.4
右击src,new->package新建一个包Selenium_Test,
再右击包Selenium_Test,new->class,新建一个Class类Case1.java,最终效果如下:

-----7.5
下面我们来用IE浏览器执行一个实例,修改Case1.java,这里我们用selenium webdriver来写代码,代码如下:

package Selenium_Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
public class Case1
public static void main(String[] args)
System.setProperty("webdriver.ie.driver",
"E:\\eclipse\\selenium\\IEDriverServer.exe");//注意这里IEDriverServer.exe的文件存放路径
DesiredCapabilities ieCapabilities = DesiredCapabilities
.internetExplorer();
ieCapabilities
.setCapability(
InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,
true);
//new一个webdriver对象
WebDriver driver = new InternetExplorerDriver(ieCapabilities);
//上面这一段是用来解决IE安全设置提示的
//通过webdriver的get方法调用浏览器,打开网页:http://www.google.com.hk
driver.get("http://www.google.com.hk");
//通过页面元素的name=q定位到查询输入框

WebElement element = driver.findElement(By.name("q"));
//在输入框输入‘hello Selenium!’
element.sendKeys("hello Selenium!");
//提交查询
element.submit();
//等待,超时则抛出错误
try
Thread.sleep(3000);
catch (InterruptedException e)
e.printStackTrace();

//输出当前页面的title
System.out.println("Page title is: " + driver.getTitle());
//关闭所有webdriver进程,退出
driver.quit();



-----7.6
右击Case1.Java,Run As—>Java Application,执行成功结果如下:

-----7.7
接着,我们换成用selenium 1.0来写代码,Case1_1.java代码如下:

package Selenium_Test;

import com.thoughtworks.selenium.*;

public class Case1_1

public static void main(String[] args)



DefaultSelenium selenium = new DefaultSelenium("localhost", 4444, "*iexplore", "http://www.baidu.com/");

selenium.start();

selenium.open("/");

selenium.type("id=kw1", "selenium");

selenium.click("id=su1");

System.out.println("Page title is: " + selenium.getTitle());

web自动化测试从入门到持续集成(selenium webdriver)

  在很多刚学习自动化的可能会认为我只需要会运用selenium,我只需要在一个编辑器中实用selenium +java编写了一些脚本那么就会自动化了,是真的吗?答案肯定是假的。自动化肯定是需要做到真的完全自动化,那如何实现呢?接着往下看。
首先我们需要准备的环境:
1、jdk环境配置好
2、maven环境配置
3、jenkins环境配置(jenkins.war的包)
4、在eclipse中创建一个maven工程(不是java工程,为什么?因为java工程还需要自己去下载selenium等等包然后引入,但是maven工程只需要在pom文件中将各种包的配置添加进去就行)
5、在maven工程中的pom.xml文件中将selenium、testng包引入,其他的都不要。
环境准备好之后就准备创建包,写代码吧。
我这里拿pageobject做为例子,首先看一下我工程的一个目录结构:

技术分享

在这个结构中会拿部分来讲:
base:主要是放driver的基类,他主要是对webdriver进行了第二次封装
business、handle、page这三个类主要是pageobject模型中实用的页面分离,page里面放的全是页面元素,handle放的是该页面元素的操作、business放的是该页面的操作元素之间的一些业务。
testcase:顾名思义就是放我们case的地方
util:一些工具类的存放地方
下面的testNG.xml就是我们testng的一个配置文件,如果我们需要用testng运行那么就直接右键运行。
pom.xml:是我们maven的文件,我们所有的依赖文件都添加在里面,当我们使用jenkins来集成时,jenkins里面配置的就是这个pom文件
首先来看我们的DriverBase的代码:

public class DriverBase {
public WebDriver driver;
public DriverBase(String browser){
SelectDriver selectDriver =new SelectDriver();
this.driver = selectDriver.driverName(browser);
}
/**
* 获取driver
* */
public WebDriver getDriver() {
return driver;
}

public void stop(){
System.out.println("stop webdriver");
driver.close();
}

/**
* 封装Element方法
* */
public WebElement findElement(By by){
WebElement element = driver.findElement(by);
return element;
}

/**
* get封装
* */

public void get(String url){
driver.get(url);
}

/*
* 返回
* **/
public void back(){
driver.navigate().back();
}

/**
* 点击
* */
public void click(WebElement element){
element.click();
}
/**
* 获取当前url
* */
public String getUrl(){
return driver.getCurrentUrl();
}
/**
* 获取title
* */
public String getTitle(){
return driver.getTitle();
}
/**
* 关闭浏览器
* */
public void close(){
driver.close();
}

  

在这个里面我们对webdriver常用的一些方法进行了一个第二次封装。
当我们把基础的封装了后,我们再次看我们整个框架的结构:
技术分享

在page里面我们需要再次封装一个BasePage的类,这个是主要封装我们页面一些公用的方法,一些常用的方法我们只需要在这个类里面写一次就好,其他的page页面继承这个类。
来看我们base类里面的部分方法:

public class BasePage {
    public DriverBase driver;
    public BasePage(DriverBase driver){
        this.driver = driver;
    }

    
    /**
     * 定位Element
     * @param By by
     * */
    public WebElement element(By by){
        WebElement element = driver.findElement(by);
        return element;
    }
        /**
     * 封装点击
     * */
    public void click(WebElement element){
        if(element !=null){
            element.click();
        }else{
            System.out.println("元素没有定位到,点击失败。");
        }
    }
    
    /**
     * 封装输入
     * */
    public void sendkeys(WebElement element,String value){
        if(element !=null){
            element.sendKeys(value);
        }else{
            System.out.println(element+"元素没有定位到,输入失败"+value);
        }
    }
}

我们封装了一些常用的方法,然后我们的page页面都可以拿过去运用,这样减少了我们后期写这些方法的成本,下面来看我们loginpage。
在我们loginpage里面存放的全是登陆页面获取元素的方法,首先看我们我们的登陆页面:
技术分享
这个是我们的登陆页面,登陆页面中我们常用的就用户名、密码、记住登陆、登陆按钮几个元素,那么我们只需要把这几个元素都封装在我们的loginpage页面就好,看下面代码:

public class loginPage extends BasePage{
    public loginPage(DriverBase driver){
        super(driver);
    }
    /**
     * 获取用户名输入框
     * */
    public WebElement getUserElement(){
        return element(getByLocator.getLocator("username"));
    }
    
    /**
     * 获取密码输入框Element
     * */
    public WebElement getPasswordElement(){
        return element(getByLocator.getLocator("userpass"));
    }
    /**
     * 获取登陆按钮element
     * */
    public WebElement getLoginButtonElement(){
        return element(getByLocator.getLocator("loginbutton"));
    }
}

在这里我们看不到任何的元素,我们所有的定位元素都进行了二次封装,在我们的BasePage里面有相应的封装,但是他也会去调用其他的一些定位类。当我们有了所有的元素之后我们是不是就需要再次对这些元素操作呢?接下来看我们的操作类:

public class loginPageHandle {
    public DriverBase driver;
    public loginPage lp;
    public loginPageHandle(DriverBase driver){
        this.driver = driver;
        lp = new loginPage(driver);
    }
    
    /**
     * 输入用户名
     * */
    public void sendKeysUser(String username){
        lp.sendkeys(lp.getUserElement(), username);
    }
    
    /**
     * 输入密码
     * */
    public void sendKeysPassword(String password){
        lp.sendkeys(lp.getPasswordElement(), password);
    }
    /**
     * 点击登陆
     * */
    public void clickLoginButton(){
        lp.click(lp.getLoginButtonElement());
    }
}

在我们的操作类里面所有的方法都是对单一的一个元素进行操作,这里并不是很全,并没有把所有元素都罗列进去,我们可以自行思考。在一些po模型中一些人是把这个放在了page里面,其实这个看个人,没有对错,只需要记住一个思想就行,我们的目的是把所有的元素、操作、数据都分离开就好。有操作后我们可以对业务或者一些人认为是case来看了:


public class LoginPro {
public loginPageHandle lph;
public DriverBase driver;
public LoginPro(DriverBase driver){
this.driver = driver;
lph = new loginPageHandle(driver);
}
public void login(String username,String password){
if(lph.assertLoginPage()){
lph.sendKeysUser(username);
lph.sendKeysPassword(password);
lph.clickAutoSignin();
lph.clickLoginButton();
}else{
System.out.println("页面不存在或者状态不正确。");
}
}

}

 

在这个类如果放在case里面也是合适的,只是那样会有一点儿长,所以我单独拿出来了,我们可以看到我首先判断的是我处于的页面是否在我们的登陆页面,如果字我才会进行下面的操作。当完成这个之后我们就可以单独的写case了:

public class SuiteTestLogin extends CaseBase{
    public DriverBase driver;
    public LoginPro loginpro;
    public HomePagePro homepagepro;
    public ProUtil pro;
    public HandleCookie handcookie;
    
    @BeforeClass
    public void beforeClass(){
        this.driver = InitDriver("chrome");
        pro = new ProUtil("loginTest.properties");
        driver.driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        loginpro = new LoginPro(driver);
        handcookie = new HandleCookie(driver);
        homepagepro = new HomePagePro(driver);
        driver.get(pro.getPro("url"));
    }
    @Test
    public void testLogin(){
        String username = pro.getPro("username");
        String password = pro.getPro("passwd");
        loginpro.login(username, password);
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        if(homepagepro.AssertLogin(pro.getPro("yq"))){
            System.out.println("登陆成功"+username);
            handcookie.writeCookie();
        }
    }
    @AfterClass
    public void afterClass(){
        driver.close();
    }
}

在case里面我们有一些基础的方法来至于case的基类,我们再这case里面只做一件事情那就是打开页面然后登陆,最后退出。
当处于当前页面时我们可以运行,但是这个不是我们的目的,我们的目的是要整个自动化起来,所以我们需要在testng.xml里面去配置


<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" parallel="false">
<parameter name ="username" value="18513199586"/>
<parameter name ="pass" value="111111"/>
<test name="Test1">
<listeners>
<listener class-name="com.mushishi.selenium.util.RetryListener" />
<listener class-name="com.mushishi.selenium.util.TestNGListenerScreen" />
</listeners>
<classes>
<class name="com.mushishi.selenium.testCase.SuiteTestLogin"/>
<class name="com.mushishi.selenium.testCase.SuiteTestBuy"/>
</classes>
</test>
</suite>


我们这个配置有一个监听事件,这个监听是为了当遇见错误时实现截图的。这个配置弄好后你可以右键该xml直接运行,最后你会得到一个一样而又不一样的结果。
testng.xml配置完毕后我们接着需要在我们的pom.xml中接着进行配置编译插件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.mushishi</groupId>
  <artifactId>selenium</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>selenium</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.4.0</version>
    </dependency>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.11</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
  </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.3.2</version>
                    <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                    </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.12</version>
                <inherited>true</inherited>
                <configuration>
                <suiteXmlFiles>
                    <suiteXMLfile>testNG.xml</suiteXMLfile>
                </suiteXmlFiles>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

我们需要把这两个插件加入,加入后我们就可以直接右键运行该xml,得到的结果也是一样,可以运行刚我们的整个case。最后一步集成jenkins
在打开的jenkins页面只需要选择新建,然后进入到了创建工程页面,在这个页面你需要选择创建一个maven工程:技术分享
在创建完成后只需要在我们的build栏进行一个简单的配置,这里配置我们刚pom.xml文件的绝对路径:技术分享
到目前为止你可以直接保存,然后去首页进行构建就可以了:
技术分享
在jenkins这里我们还可以进行邮件的配置等等操作。哈哈,赶快去动手吧。

备注:本文转载自慕课网,信息如下:

作者: Mushishi_Xu 
链接:http://www.imooc.com/article/18756
来源:慕课网































































































































以上是关于eclipse自动化需要哪些selenium的包的主要内容,如果未能解决你的问题,请参考以下文章

[Eclipse]保存java文件时,自动删除不需要的包import

Selenium+Java+Eclipse 自动化测试环境搭建

自动化测试Maven+Eclipse+Selenium+Java环境搭建和测试

selenium自动化测试框架都有哪些

selenium 怎么使用java编写测试用例

Python+selenium+eclipse+pydev自动化测试环境搭建