selenium(java)教程学习(附带全部代码)

news/2024/10/18 0:26:32/

java web自动化
java+selenium+testng+Jenkins
想要使用Selenium实现web自动化测试,主要需要的东西。
1.需要安装jdk,配置jdk,(selenium3需要jdk1.8以上)
2. 安装eclipse(编写工具)
3. 安装webdrver(集成selenium api jar文件)
需要下载webdriver-java-zip
下载好以后
在这里插入图片描述
步骤:
1.创建一个java 工程 java project
2.在工程下创建一个lib文件夹
3.将下载的webdriver下的jar文件及lib下的jar文件复制到新建的lib文件夹下
4.选中lib下的所有jar–build path–add build to path
浏览器驱动
这个不能少,不然驱动不了浏览器,我用的是chrome浏览器
安装浏览器和对应的驱动 (浏览器的版本要和驱动版本一致)
驱动下载地址
在这里插入图片描述
配置好以后就可以写代码了
第一个自动化脚本

public static void main(String[] args) throws InterruptedException {//设置驱动System.setProperty("webdriver.chrome.driver", "D:\\JavaZhiDong/chromedriver.exe");//创建ChromeDriver对象ChromeDriver driver = new ChromeDriver();//创建窗口最大化driver.manage().window().maximize();//打开网页driver.get("https://www.baidu.com");

然后你就成功的打开了
在这里插入图片描述
自动化就是这么简单,要想学好自动化必须有代码能力,还要动手敲。
你要牢记少年
在这里插入图片描述
元素定位

public static void main(String[] args) {//配置驱动System.setProperty("webdriver.chrome.driver", "D:\\JavaZhiDong/chromedriver.exe");//创建ChromeDriver对象ChromeDriver driver = new ChromeDriver();//窗口最大化driver.manage().window().maximize();//打开网站driver.get("https://www.baidu.com");

常用用的
1.ID定位,因为id是唯一的能用id不用其他

		//用ID定位输入框WebElement id = driver.findElement(By.id("kw"));//输入Pythonid.sendKeys("python");//用ID定位WebElement ById = driver.findElementById("su");//点击百度一下ById.click();

2.name定位

		//用name定位输入框WebElement Name = driver.findElementByName("wd");//输入奇艺科技Name.sendKeys("小强");//强制等待Thread.sleep(1000);//用class定位元素driver.findElementByClassName("s_btn").click();//关闭网页driver.close();

3.class定位

 		//className定位输入框WebElement name = driver.findElementByClassName("s_ipt");//输入吾爱破解name.sendKeys("吾爱破解");//定位点击按钮driver.findElementByClassName("s_btn").click();//关闭网页driver.close();

4.超链接定位

		//用linkText等位超链接WebElement  xinwen= driver.findElementByLinkText("新闻");//点击新闻xinwen.click();//设置强行等待时间Thread.sleep(3000);//关闭网页driver.close();

5.部分超链接

	driver.get("https://www.baidu.com");//用partialLinkText  定位部分超链接WebElement tieba = driver.findElementByPartialLinkText("贴");//点击贴吧tieba.click();//设置强制等待Thread.sleep(3000);//关闭网页driver.close();

6.css定位
层叠样式表(#代表id属性,"."代表class属性)
通过id属性找元素,语法:E#idName,E代表某个元素

driver.findElementByCssSelector("#kw");

通过class属性找元素,语法:E.className,E代表某个元素

driver.findElementByCssSelector("input.s_ipt");

PS:class里面有空格,我们用“.”来代替空格,形如:bg s_btn

driver.findElementByCssSelector("input.bg.s_btn");

7.xpash定位

//用xpash等位输入框driver.findElementByXPath("//*[@id='kw']");

定位到元素–右键–copy–Copy Xpash
对元素操作方法
sendKeys(" ") 输入数据
clear(); 清空输入框
click(); 对元素进行点击
getText() 获取元素文本的值
getAttribut(“属性名”) 获取某个属性的值
操作网页元素 下拉菜单
选中下拉菜单有三种方式
1.selectByIndex: 通过索引选中某个条目
2.selectByVisibleText: 通过下拉列表中选项的可见文本选中某个条目
3.selectByValue: 通过下拉列表某个选项的value值,选中该选项
PS:html标签里面一定是select才可以这样使用

//定位下拉框WebElement xiala = driver.findElementById("cardType");Select select = new Select(xiala);select.selectByIndex(3);Thread.sleep(1000);select.selectByValue("C");Thread.sleep(1000);select.selectByVisibleText("中国居民身份证");

浏览器多窗口间切换的问题
Selenium为每一个窗口提供了一个唯一的id号
这个id号在selenium中被称为window handle(窗口句柄,手柄)
通过这个id号来实现多窗口间的切换
获取当前窗口的id号使用driver.getWindowHandle();(获取主窗口的句柄)
获取所有打开窗口的id号使用driver.getWindowHandles();
窗口切换使用driver.switchTo().window(winHandle);
判断逻辑:
获取第一个窗口的id号
获取所有窗口的id号
如果不是第一个窗口,说明是新窗口,切换到新窗口
driver.switchTo().window(winHandle)
Selenium中的多个窗口切换(3个及以上的窗口切换)
获取第一百度窗口手柄

//获取百度窗口手柄String baiduHandle = driver.getWindowHandle();

窗口切换及判断

//点击12306网站driver.findElementByXPath("//*[@id='1']/h3/a[1]").click();//从所有窗口中判断是否第一个窗口,如果不是第一个进行窗口切换Set<String> windowHandles = driver.getWindowHandles();for(String string : windowHandles){System.out.println(string);if(string!=baiduHandle){//进行窗口切换driver.switchTo().window(string);}}

附带全部代码注册12306网站

package com.qiyi.testuser;import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;import javax.swing.plaf.FontUIResource;import org.junit.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.Select;public class TestWangZhan {
public static void main(String[] args) throws InterruptedException {//启动驱动System.setProperty("webdriver.chrome.driver", "D:\\JavaZhiDong\\chromedriver.exe");//创建ChromeDriver对象ChromeDriver driver = new ChromeDriver();//窗口最大化driver.manage().window().maximize();//添加隐式等待时间driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);//打开百度网页driver.get("https:www.baidu.com");//用ID定位输入框WebElement id = driver.findElement(By.id("kw"));//输入12306id.sendKeys("12306");//用ID定位WebElement ById = driver.findElementById("su");//点击百度一下ById.click();//获取百度窗口手柄String baiduHandle = driver.getWindowHandle();//点击12306网站driver.findElementByXPath("//*[@id='1']/h3/a[1]").click();//从所有窗口中判断是否第一个窗口,如果不是第一个进行窗口切换Set<String> windowHandles = driver.getWindowHandles();for(String string : windowHandles){System.out.println(string);if(string!=baiduHandle){//进行窗口切换driver.switchTo().window(string);}}//注册超链接driver.findElementByLinkText("注册").click();//定位用户名WebElement yonghu = driver.findElementById("userName");yonghu.sendKeys("dawdadasdfvgbhnfdasfasflasfaf");//定位密码WebElement mima = driver.findElementById("passWord");mima.sendKeys("wei8520");//等位确定密码WebElement quren = driver.findElementById("confirmPassWord");quren.sendKeys("wei8520");//强制等待Thread.sleep(3000);//定位下拉框WebElement xiala = driver.findElementById("cardType");Select select = new Select(xiala);select.selectByIndex(3);Thread.sleep(1000);select.selectByValue("C");Thread.sleep(1000);select.selectByVisibleText("中国居民身份证");//定位姓名WebElement xingming = driver.findElementByName("loginUserDTO.name");xingming.sendKeys("郑杰武");//定位身份证号WebElement shenfen = driver.findElementById("cardCode");shenfen.sendKeys("440582198712141558");//定位邮箱WebElement youxiang = driver.findElementById("email");youxiang.sendKeys("329625679@qq.com");//定位手机号WebElement shouji = driver.findElementByName("userDTO.mobile_no");shouji.sendKeys("18569942232");//定位方框driver.findElementById("checkAgree").click();//定位下一步driver.findElementById("nextBtn").click();//获取文本WebElement wenben = driver.findElementById("content_defaultwarningAlert_hearder");String text = wenben.getText();System.out.println("----------"+text);//断言Assert.assertEquals("该证件号码已被注册。请确认是否您本人注册,\"是\"请使用原账号登录,\"不是\"请通过铁路12306App办理抢注或持该证件原件到就近的办理客运业务的铁路车站办理被抢注处理,完成后即可继续注册,或致电12306客服咨询。", text);//点击确定driver.findElementById("qd_closeDefaultWarningWindowDialog_id").click();//关闭网页driver.close();}
}

怎对这样的窗口
iframe 元素定位
1.切换到iframe里面
driver.switchTo().frame(webElement);
webElement 是iframe元素
2.切换到之前的页面
driver.switchTo().defaultContent();

package com.qiyi.testuser;import java.time.format.TextStyle;
import java.util.concurrent.TimeUnit;import org.openqa.selenium.chrome.ChromeDriver;public class TestYingXiongLianMeng {public static void main(String[] args) throws InterruptedException {// 启动驱动System.setProperty("webdriver.chrome.driver", "D:\\JavaZhiDong/chromedriver.exe");//创建ChromeDriver对象ChromeDriver driver = new ChromeDriver();//窗口最大化driver.manage().window().maximize();//设置隐式等待时间driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);//打开网站driver.get("https://lol.qq.com/act/a20191216demacia/index.shtml?e_code=500410&idataid=294614");//超链接点击登录driver.findElementByLinkText("登录").click();//切换窗口driver.switchTo().frame(driver.findElementById("loginIframe"));//强制等待Thread.sleep(3000);//点击头像进行登入driver.findElementById("img_out_319625679").click();//切换之前页面driver.switchTo().defaultContent();}}

testng集成(连续运行多个用例,执行多个脚本)
testng:下一代测试技术,是一个插件
管理用例,生成测试报告
eclipse安装testng
1.下载、解压testng插件,将plugins文件夹下的文件夹放到eclipse对应的plugins目下
2.重启eclipse
3.项目中引入testng 右键项目 --BuildPath --AddLibraries–选择testng
创建testng类,testng类里面带有@Test的方法能够像main方法一样执行。

.集成reportng(https://www.cnblogs.com/xubc/p/7265070.html)
为了让测试报告可读性更好,我们使用reportng
1.lib集成reportNg的jar包,build path
reportng-1.1.4.jar
guice-4.2.2.jar
velocity-dep-1.4.jar
2.设置里面勾选默认的监听(不要勾选绝对路径)
window --preference–勾选disable default listener
设置里面增添:org.uncommons.reportng.HTMLReporter

3.testng.xml添加新的监听代码<listeners><listener class-name="org.uncommons.reportng.HTMLReporter" /><listener class-name="org.uncommons.reportng.JUnitXMLReporter" /></listeners>

.命令行运行批处理脚本
1.创建批处理文件
新建文本文档,修改后缀名为.bat
2.文件中输入执行的命令
Java -cp bin;lib/* org.testng.TestNG testng.xml
pause

	PS:Java -cp将编译和执行位于bin目录下的.class文件和所有lib目录下jar包文件。因我们基于TestNG框架,所以指定org.testng.TestNG作为java主程序入口。testng.xml则告诉testNG要执行的测试脚本,名字可更换。3.工程lib目录下需要引入testng.jar,并build pathPS:testng.xml和批处理文件在同一个目录下

.Jenkins通过命令调起脚本
1.新建一个自由风格项目
2.增加构建步骤–执行windows批处理命令
3.输入命令,形如:
D:
cd D:\workspace\Test09Web
call qiyi09.bat
exit 0
4.设置定时任务:比如晚上12点运行


http://www.ppmy.cn/news/248336.html

相关文章

台式计算机和便携式计算机是替代品吗,iPad能否替代笔记本电脑?这结果我一万个不服!...

近年来&#xff0c;随着平板电脑的不断发展&#xff0c;有一个长期存在的问题&#xff0c;平板(文中主要指iPad)是否可以替代传统笔记本电脑&#xff1f; 平板电脑和笔记本电脑如今可以做很多事情&#xff0c;最好的平板电脑甚至比一些笔记本电脑功能更强大&#xff0c;但它是一…

java 获取数组值_java获取数组值的数量

我已经有了以下代码 public class Qn3 { static BigDecimal[] accbal new BigDecimal[20]; private static Integer[] accnums new Integer[5]; public static void main(String[] args) { int count; accnums {1,2} //i cant add this line of code as well, what is wrong?…

阿里P8整理总结,入职大厂必备Java核心知识(附加面试题

前言 今天就给大家分享一波一位小伙伴面试大厂的经历、知识点和面试题分享&#xff0c;主要内容包括&#xff1a;JVM、JAVA集合、JAVA多线程并发、JAVA基础、Spring原理、微服务、Netty与RPC、网络、日志、 Zookeeper、 Kafka、 RabbitMQ、 Hbase、 MongoDB、 Cassandra、设计模…

在线flash转html5,Safari插件推荐:自动转Flash为Html5

给大家推荐一款很给力Mac系统Safair浏览器插件&#xff0c;它能够自动将网页上的Flash视频转换成HTML5播放&#xff0c;能够很大程度上节省CPU损耗&#xff0c;同时也使得MacBook风扇温度降低。 替换国内各大网站flash播放器为Html5播放器&#xff0c;减少CPU占用率&#xff0c…

领域驱动设计在爱奇艺打赏业务的实践

领域驱动设计(Domain-Driven Design&#xff0c;以下简称DDD)思潮的形成要追述到30几年前&#xff0c;17年前&#xff0c;Eirc Evans定义了领域驱动设计的概念。DDD一直为传统行业的软件工程师提供软件设计的方法论&#xff0c;但是在互联网行业却使用很少。直到近几年&#xf…

从 Spark Streaming 到 Apache Flink : 实时数据流在爱奇艺的演进

作者&#xff1a;陈越晨 整理&#xff1a;刘河 本文将为大家介绍Apache Flink在爱奇艺的生产与实践过程。你可以借此了解到爱奇艺引入Apache Flink的背景与挑战&#xff0c;以及平台构建化流程。主要内容如下&#xff1a; 爱奇艺在实时计算方面的的演化和遇到的一些挑战爱奇艺…

领域驱动设计(DDD)在爱奇艺打赏业务的实践

领域驱动设计(Domain-Driven Design&#xff0c;以下简称DDD)思潮的形成要追述到30几年前&#xff0c;17年前&#xff0c;Eirc Evans定义了领域驱动设计的概念。DDD一直为传统行业的软件工程师提供软件设计的方法论&#xff0c;但是在互联网行业却使用很少。直到近几年&#xf…

TiDB 在爱奇艺实时分析场景的应用实践

作者&#xff1a;luzizhuo 原文来源&#xff1a; https://tidb.net/blog/21ab5c22 本文根据路希在【PingCAP DevCon 2021】上的演讲整理而成。 视频回顾&#xff1a; https://www.bilibili.com/video/BV17A411P7vj 讲义下载&#xff1a; 爱奇艺-路希-TiDB 在爱奇艺…