java+selenium实现web自动化
1.环境搭建:
eclipse4.8 + java1.8 + selenium-3.14 基本都是使用最新版
(1) eclipse4.5下载:http://www.eclipse.org/downloads/
(2) java8官方网站下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
(3) jdk安装成功后,要配置环境变量
(4) selenium各版本jar包下载地址
http://selenium-release.storage.googleapis.com/index.html
selenium需要的jar包:selenium-server-standalone-3.4.0.jar
(5) 创建java project项目,把相关jar包引入
需要下载浏览器对应的webDriver,放到D:\eclipse-workspace\java_Selenium_Demo1\lib\chromedriver.exe
注意:webDriver必须与浏览器版本相对应,否则会出现问题。
参考地址 : https://www.cnblogs.com/xiaozhaoboke/p/10107349.html
2.新建java工程 java_selenium_Demo1
(1)新建lib(Folder)文件夹拷入所需驱动和jar包(并引入工程)
(2)新建testCase用例
package test; import java.util.concurrent.TimeUnit;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.Select; public class testCase { public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "D:\\eclipse-workspace\\java_Selenium_Demo1\\lib\\chromedriver.exe");// chromedriver驱动存放地址
WebDriver driver = new ChromeDriver(); // 新建一个WebDriver 的对象,但是new 的是谷歌的驱动
driver.manage().window().maximize(); //浏览器最大化
String url = "http://www.baidu.com";
driver.get(url); // 打开指定的网站 //driver.navigate().to(url); // 打开指定的网站 /*
*
* driver.findElement(By.id("kw")).sendKeys(new String[] { "hello" });//
* 找到kw元素的id,然后输入hello driver.findElement(By.id("su")).click(); // 点击按扭
*/
try {
/**
* WebDriver自带了一个智能等待的方法。 driver.manage().timeouts().implicitlyWait(arg0, arg1);
* Arg0:等待的时间长度,int 类型 ; Arg1:等待时间的单位 TimeUnit.SECONDS 一般用秒作为单位。
*/
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
} catch (Exception e) {
e.printStackTrace();
} //获取当前浏览器的信息
System.out.println("Title:" + driver.getTitle());
System.out.println("currentUrl:" + driver.getCurrentUrl()); //执行js脚本
String jString = "alert('给他弹出一个HelloWord')";
((JavascriptExecutor) driver).executeScript(jString); // 处理alert框
System.out.println(driver.switchTo().alert().getText());
Thread.sleep(10);
driver.switchTo().alert().accept(); //获取单个元素
WebElement element = driver.findElement(By.id("wrapper"));
System.out.println(element.getAttribute("class")); //获取多个元素
List<WebElement> elList = driver.findElements(By.tagName("input"));
for (WebElement e : elList) {
System.out.println("获取多个元素:"+e.getAttribute("name"));
} //定位层级元素
WebElement e = driver.findElement(By.cssSelector("#qrcode-item qrcode-item-1"));
List<WebElement> list = e.findElements(By.tagName("div"));
for (WebElement e1 : list) {
System.out.println("定位层级元素:"+e1.getAttribute("class"));
} //获取当前的窗口
String currentWindow = driver.getWindowHandle(); //获取所有的窗口
Set<String> handles = driver.getWindowHandles(); //遍历窗口
Iterator<String> iterator = handles.iterator();
while (iterator.hasNext()) {
if (currentWindow == iterator.next())
continue;
//跳转到弹出的窗口
WebDriver driver2 = driver.switchTo().window(iterator.next());
driver2.getTitle(); } //处理弹出框
Alert alert = driver.switchTo().alert();
alert.getText();
alert.dismiss();//相当于点击取消 Alert confirm = driver.switchTo().alert();
confirm.getText();
confirm.accept();//相当于点击确认 Alert prompt = driver.switchTo().alert();
prompt.getText();
prompt.accept();
prompt.sendKeys("测试1");//输入值 //处理下拉列表
Select select = new Select(driver.findElement(By.id("select")));
select.selectByIndex(1);
select.selectByValue("西安");
select.selectByVisibleText("咸阳");
//获取下拉框的全部选项
List<WebElement> list2 = select.getOptions();
for (WebElement webElement : list2) {
webElement.click();//点击下拉框
} //处理cookie
//添加一个cookie
Cookie cookie = new Cookie("COOKIE", "NAME","D://COOKIES");
driver.manage().addCookie(cookie); //获取cookies
Set<Cookie> set = driver.manage().getCookies();
Iterator<Cookie> iterator2 = set.iterator();
while (iterator2.hasNext()) {
Cookie c = iterator2.next();
c.getName();
c.getValue();
c.getPath(); } driver.manage().deleteAllCookies();
driver.manage().deleteCookie(cookie);
driver.manage().deleteCookieNamed("COOKIE"); //等待加载完页面
try {
driver.manage().timeouts().wait(1);
driver.manage().timeouts().implicitlyWait(1,TimeUnit.SECONDS);//等待界面加载完
} catch (InterruptedException e2) { e2.printStackTrace();
} //模拟鼠标和键盘操作
Actions action = new Actions(driver);
action.click();
action.dragAndDrop(element, e);
action.sendKeys(element,"12222").perform();
action.click(element);
action.keyDown(currentWindow); driver.quit();// 退出浏览器
/**
* dr.quit()和dr.close()都可以退出浏览器,简单的说一下两者的区别:第一个close,
* 如果打开了多个页面是关不干净的,它只关闭当前的一个页面。第二个quit,
* 是退出了所有Webdriver所有的窗口,退的非常干净,所以推荐使用quit最为一个case退出的方法。
*/ } }
参考总结原文地址:https://www.cnblogs.com/wmjone/p/9565596.html
java+selenium实现web自动化的更多相关文章
- 《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)
1.简介 在使用appium写app自动化的时候介绍toast的相关元素的定位,在Web UI测试过程中,也经常遇到一些toast,那么这个toast我们这边如何进行测试呢?今天宏哥就分两篇介绍一下. ...
- 基于Selenium的Web自动化框架增强篇
在写完上一篇“基于Selenium的Web自动化框架”(http://www.cnblogs.com/AlwinXu/p/5836709.html)之后一直没有时间重新审视该框架,正好趁着给同事分享的 ...
- 【Selenium01篇】python+selenium实现Web自动化:搭建环境,Selenium原理,定位元素以及浏览器常规操作!
一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 二.话不多说,直接开干,开始搭建自动化测试环境 这里以前在 ...
- 【Selenium02篇】python+selenium实现Web自动化:鼠标操作和键盘操作!
一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第二篇博 ...
- 【Selenium05篇】python+selenium实现Web自动化:读取ini配置文件,元素封装,代码封装,异常处理,兼容多浏览器执行
一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第五篇博 ...
- 【Selenium06篇】python+selenium实现Web自动化:日志处理
一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第六篇博 ...
- 【Selenium03篇】python+selenium实现Web自动化:元素三类等待,多窗口切换,警告框处理,下拉框选择
一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第三篇博 ...
- 【Selenium04篇】python+selenium实现Web自动化:文件上传,Cookie操作,调用 JavaScript,窗口截图
一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第四篇博 ...
- 【Selenium07篇】python+selenium实现Web自动化:PO模型,PageObject模式!
一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第七篇博 ...
随机推荐
- 将nginx永久加入到系统环境变量
php,mysql的永久方法跟这个一样 下来配置环境变量 在/etc/profile 中加入: export NGINX_HOME=/usr/local/nginxexport PATH=$PAT ...
- Linux使用百度云
导读 百度云没有Linux客户端,于是有大神用Go语言写出来一个叫BaiduPCS-Go的命令行盘客户端,可以通过终端操作百度云盘,在Linux上实现上传下载.但是因为是命令行版本的,对没有命令行使用 ...
- PS制作水火相溶特效文字图片
最终效果 一.新建一个1400*900像素的画布. 二.由上到下拉一个深灰到纯黑径向渐变. 三.输入字母S,并用ctrl+t拉到适合的大小,并且降低不透明度. 四.拖入水花素材(如果大家有水花笔刷的话 ...
- 创建SVN源库钩子
在源库的hooks目录下面添加post-commit.bat文件,每次代码该文件会自动执行以保证同步到备份服务器 set SVN_HOME="D:\Program Files\VisualS ...
- 第二章· Redis管理实战
数据类型 管理实战 数据类型 String: 字符串类型 Hash: 哈希类型 List: 列表类型 Set: 集合类型 Sorted set: 顺序集合类型 管理实战 通用操作
- mongoDB 其他数据类型
时间 类型 获取当前时间 new Date() 自动生成当前时间(国际标准时间) db.class.insertOne({book:"数学",date:new Date()}) D ...
- shell 基础(一)
废话少说 往下看 1. 查看 Shell Shell 是一个程序,一般都是放在/bin或者/user/bin目录下,当前 Linux 系统可用的 Shell 都记录在/etc/shells文件中./e ...
- 应用调试(二)GDB
title: 应用调试(二)GDBdate: 2019/1/17 21:00:10 toc: true 应用调试(二)GDB gdb下载工具安装交叉工具链设置GDB介绍编译GDBtarget/host ...
- Matlab调用Java类
第一步:定位Matlab中Java环境的ext目录 新建一个M script文件,或者直接在Matlab的交互式命令行中输入: >> disp(java.lang.System.getPr ...
- 第三节:SignalR之PersistentConnection模型详解(步骤、用法、分组、跨域、第三方调用)
一. 承上声明 在上一个章节里,啰里啰嗦写了一堆关于介绍SignalR的“废话”,从这一篇开始往后正式撸代码,这期间不少人(包括 张善友大哥)建议我直接用.Net Core下的SignalR,关于此简 ...