一、java+selenium+firefox

1.环境准备:JDK1.8

2.安装firefox浏览器v59

3.下载驱动:https://github.com/mozilla/geckodriver/releases

4.selenium依赖pom.xml导入:https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java

selenium 历史版本镜像下载地址:https://npm.taobao.org/mirrors/selenium

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

5.代码实现

package cn.test;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver; public class FirefoxDemo01 { public static void main(String[] args) {
WebDriver driver=null;
try {
//自定义安装Firefox路径
System.setProperty("webdriver.firefox.bin", "D:\\Firefox59\\App\\Firefox\\firefox.exe");
//存放Firefox驱动的路径
System.setProperty("webdriver.gecko.driver", "src/test/resources/geckodriver.exe");
driver = new FirefoxDriver();
driver.get("https://www.baidu.com/");
} catch (Exception e) {
e.printStackTrace();
}finally {
driver.quit();
System.out.println("执行结束,关闭浏览器");
}
}
}

二、java+selenium+IE

1.JDK1.8已安装

2.selenium3.51 依赖包上述已经导入;

3.下载IE驱动地址:https://npm.taobao.org/mirrors/selenium/3.5/

4.代码实现

package cn.test;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities; public class IEDemo02 {
public static void main(String[] args) {
WebDriver driver = null;
try {
//指定IEDriver的存放路径
System.setProperty("webdriver.ie.driver", "src/test/resources/IEDriverServer.exe");
//创建Capabilities对象
DesiredCapabilities capabilities = new DesiredCapabilities();
//浏览器安全模式保持一致(通过代码忽略设置安全模式保持一致)
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
//浏览器缩放比例保持正常(忽略浏览器缩放比例设置)
capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
driver = new InternetExplorerDriver(capabilities);
driver.get("https://www.baidu.com");
Thread.sleep(3000);
} catch (Exception e) {
e.printStackTrace();
}finally {
//关闭浏览器
driver.quit();
System.out.println("执行结束,关闭IE浏览器");
} }
}

5.常见报错信息

(1) IE驱动路径未指定,导致找不到IE驱动报错如下:

解决方法如下:

//指定IEDriver的存放路径
System.setProperty("webdriver.ie.driver", "src/test/resources/IEDriverServer.exe");

2.IE 安全模式设置

org.openqa.selenium.SessionNotCreatedException: Unexpected error launching Internet Explorer. Protected Mode settings are not the same for all zones. Enable Protected Mode must be set to the same value (enabled or disabled) for all zones.
//百度翻译仅供参考
org.openqa.selenium。启动Internet Explorer SessionNotCreatedException:意想不到的错误。 保护模式设置为所有区域是不一样的。启用保护模式必须设置为相同的值为所有区域(启用或禁用)。

解决方法如下:

//创建Capabilities对象
DesiredCapabilities capabilities = new DesiredCapabilities();
//浏览器安全模式保持一致(通过代码忽略设置安全模式保持一致)
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
WebDriver driver = new InternetExplorerDriver(capabilities);

3.浏览器的缩放比例保持正常

org.openqa.selenium.SessionNotCreatedException: Unexpected error launching Internet Explorer. Browser zoom level was set to 111%. It should be set to 100%
//通过360浏览器翻译,仅供参考
org.openqa.selenium。启动Internet Explorer SessionNotCreatedException:意想不到的错误。浏览器缩放级别设置为111%。它应该被设置为100%

解决方法如下:

//浏览器缩放比例保持正常(忽略浏览器缩放比例设置)
capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
driver = new InternetExplorerDriver(capabilities);

三、java+selenium+chrome

1.JDK1.8已安装

2.selenium 3.5.1 依赖已经导入

3.下载chrome驱动:https://npm.taobao.org/mirrors/chromedriver

我的chrome是v53. 所以我下载 v2.25驱动

注意:Chrome浏览器版本与ChromeDriver版本映射表查看链接:https://www.cnblogs.com/xiaozhaoboke/p/10107349.html

4.代码实现:

package cn.test;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver; public class ChromeDemo03 {
public static void main(String[] args) throws InterruptedException {
//自定义安装chrome路径,默认安装目录不需要配置此项
//System.setProperty("webdriver.chrome.bin", "xxx");
//指定chromeDriver存放路径
System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://www.baidu.com");
Thread.sleep(3000);
driver.quit();
System.out.println("关闭浏览器,执行结束!"); }
}

常见报错:

Exception in thread "main" java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html
//解决办法
System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");

四、引入testNG整合三大浏览器代码示例:

1.testng导入依赖

<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.10</version>
<scope>test</scope>
</dependency>

2.新建一个父类BaseCase来实现浏览器的前期准备工作

package cn.test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test; public class BaseCase {
public static WebDriver driver =null;
/**根据提供的浏览器类型初始化驱动
* @param browserType
*/
@Parameters(value= {"browserType"})
@BeforeSuite
public void init(String browserType) {
//firefox
if("firefox".equalsIgnoreCase(browserType)) {
System.setProperty("webdriver.firefox.bin", "D:\\Firefox59\\App\\Firefox\\firefox.exe");
System.setProperty("webdriver.gecko.driver", "src/test/resources/geckodriver.exe");
driver = new FirefoxDriver();
}else if("chrome".equalsIgnoreCase(browserType)) {
//chrome
System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");
driver = new ChromeDriver();
}else if("ie".equalsIgnoreCase(browserType)) {
//ie
System.setProperty("webdriver.ie.driver", "src/test/resources/IEDriverServer.exe");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
driver = new InternetExplorerDriver(capabilities);
}
}
@AfterSuite
public void over() {
driver.quit();
System.out.println("执行结束,关闭浏览器!");
}
}

3.testng.xml来配置参数,实现浏览器的选择性执行

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" parallel="false">
<test name="Test">
<classes>
<class name="cn.test.AutoDemo01"/>
</classes>
</test> <!-- Test -->
<!-- 在这里来配置使用浏览器的类型,如下 -->
<parameter name="browserType" value="firefox"></parameter>
</suite> <!-- Suite -->

4.执行用例AutoDemo01,直接继承父类来实现浏览器驱动的初始化

package cn.test;
import org.openqa.selenium.By;
import org.testng.annotations.Test;
import cn.test.BaseCase;
public class AutoDemo01 extends BaseCase{
@Test
public void test() throws InterruptedException {
driver.get("https://www.baidu.com");
driver.findElement(By.id("kw")).sendKeys("开始编写自动化脚本来执行测试用例");
Thread.sleep(3000);
}
}

5.执行TestNG Suite

6.学习后总结,不足之处后续补充修正!

Java+selenium+Firefox/ IE/ Chrome主流浏览器自动化环境搭建的更多相关文章

  1. Java&Selenium根据实参启动相应浏览器

    Java&Selenium根据实参启动相应浏览器 /** * 定义函数initBrowser * @param browser:字符串参数chrome/ie/xx * @return 并返回驱 ...

  2. Java自动化环境搭建笔记(2)

    Java自动化环境搭建笔记(2) 自动化测试 在笔记一中已经完成了一键构建项目.xml指定规划测试集.数据解耦与allure报告生成的开发.接下来便是: 浏览器驱动通过配置启动 页面元素定位解耦,通过 ...

  3. Java自动化环境搭建笔记(3)

    Java自动化环境搭建笔记(3) 自动化测试 自动化的环境已经基本搭建完成,后续可对BaseTester基类以及工具类进行扩展.下面便是持续集成的环境的搭建: Jenkins安装 git安装 源码上传 ...

  4. Java自动化环境搭建笔记(1)

    Java自动化环境搭建笔记(1) 自动化测试 先搭建java接口测试的环境: 使用mvn命令构建项目 测试集通过testNG.xml组织并运行 测试数据解耦,通过Excel等文件提供 基础依赖 创建m ...

  5. 手机APP自动化环境搭建

    1 摘要 近年来,随着移动应用从数量上和逻辑复杂程度上的增长,以及产品发布周期的紧缩,使得回归测试迫在眉睫,鉴于此APP自动化测试变得越来流行,当前主流的APP自动化工具有:Appium.Roboti ...

  6. iOS自动化环境搭建——macaca

    macaca-java for ios 自动化环境搭建 基础原理解析:https://testerhome.com/topics/6608 一.环境搭建 1.安装eclipse; -----Java开 ...

  7. MAC自动化环境搭建

    UI自动化环境搭建 第一阶段:配置appium环境硬件配置mac系统电脑 java环境sunjiedeMacBook-Air:~ vicent$ java -versionjava version & ...

  8. 基于python的App UI自动化环境搭建

    Android端Ui 自动化环境搭建 一,安装JDK.SDK 二,添加环境变量 Widows:1.系统变量→新建 JAVA_HOME 变量E:\Java\jdk1.7.0 jdk安装目录 2.系统变量 ...

  9. appium ios真机自动化环境搭建&运行(送源码)

    appium ios真机自动化环境搭建&运行(送源码) 原创: f i n  测试开发社区  6天前 Appium测试环境的搭建相对比较烦琐,不少初学者在此走过不少弯路 首先是熟悉Mac的使用 ...

随机推荐

  1. 2.1.6、SparkEnv中创建ShuffleManager

    ShuffleManager负责管理本地以及远程的block数据的shuffle操作. ShffuleManager的创建是在SparkEnv中. // Let the user specify sh ...

  2. Java_集合总结

    集合分类 Collection 接口是集合的父类 1.Set 集合 使用内部的排列机制(无序),存入集合的顺序和取出集合的顺序不一致,没有索引,存入集合的元素没有重复 HashSet集合 Linked ...

  3. xth的第 12 枚硬币(codevs 1366)

    题目描述 Description 传说 xth 曾经拥有11枚完全相同硬币(你懂得),不过今年呢,rabbit又送了他一 枚硬币.这枚硬币和其他硬币外观相同,只有重量不同,或轻或重.Xth 一不小心, ...

  4. Openfire:解决乱码问题

    当部署openfire后,创建用户和发送离线消息时会出现中文字符乱码的问题.要解决这个问题需要同时配置openfire和mysql两端. 首先openfire端,在安装页面中指定odbc连接串中需要带 ...

  5. 【转】】}linux awk 命令详解

    http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html ----------------------------------- ...

  6. 高仿QQ6.0之側滑删除

    前两天已经完毕了高仿QQ6.0側滑和优化,今天来看下側滑删除的实现吧,假设有兴趣,能够去看下之前的两篇,仿QQ6.0側滑之ViewDragHelper的使用(一)和高仿QQ6.0側滑菜单之滑动优化(二 ...

  7. 小米手机 js 脚本取src为空的适配问题

    今天測试提上来一个问题 我android webview 中运行了一段js脚本.去替换原来的图片.可是小米手机上竟然没起作用 花了一个中午的午休看问题 贴出来帮助下遇到相同的问题的朋友吧.我百度了半天 ...

  8. 自定cell(XIB)团购思路

    自定cell(XIB)团购思路 步骤一.先解析plist文件,创建model层数据. - (instancetype)initWithDict:(NSDictionary *)dict {     s ...

  9. mac下安装tensorflow及入门例子

    https://www.tensorflow.org/install/install_mac 使用virtualenv安装,virtualenv相当于使tensorflow运行在虚拟机环境下. 需要使 ...

  10. Linux系统编程——特殊进程之僵尸进程

    僵尸进程(Zombie Process) 进程已执行结束,但进程的占用的资源未被回收.这种进程称为僵尸进程. 在每一个进程退出的时候,内核释放该进程全部的资源.包含打开的文件.占用的内存等. 可是仍然 ...