java selenium自动化项目实战-入门(1)
selenium
- java selenium自动化项目实战
- 1.【报错】org.openqa.selenium.ElementClickInterceptedException: element click intercepted: Element ... is not clickable at point (1458, 409). Other element would receive the click:
- 2. 携程购买火车票实战操作
- 3. 滑块
- 3.JS/Jquery
java selenium自动化项目实战
视频链接~B站
参考资料:
java+selenium元素定位和元素操作
1.【报错】org.openqa.selenium.ElementClickInterceptedException: element click intercepted: Element … is not clickable at point (1458, 409). Other element would receive the click:
解决方案:
第一种方式若报错,可以使用二三方式:
- 普通方式
webDriver.findElement(By.xpath("//*[@id=\"app\"]/div[2]/div[1]/div[2]/button")).click(); //普通方式
- 使用键盘回车的方式
webDriver.findElement(By.xpath("//*[@id=\"app\"]/div[2]/div[1]/div[2]/button")).click(); //使用键盘回车键的方式
- 使用鼠标点击的方式
WebElement element = webDriver.findElement(By.xpath("//*[@id=\"app\"]/div[2]/div[1]/div[2]/button"));
(new Actions(webDriver)).moveToElement(element).click().perform();
在爬取携程买票界面,使用第二种方式使用键盘回车点击搜索有效。
2. 携程购买火车票实战操作
先下载驱动chromedriver.exe,放在google浏览器所在的位置,复制路径放在下边
测试一下在【携程】购买国内火车票
@SpringBootTest
public class CtripTest {private static final String HRWORK_LOGIN = "https://trains.ctrip.com/"; //购买火车票private ThreadLocal<WebDriver> webDriverThreadLocal = new ThreadLocal<>();private void init(){// 加载chromedriver 是使用chorme的必要条件 google浏览器驱动System.setProperty("webdriver.chrome.driver","C:\\Program Files\\Google\\Chrome\\Application\\driver\\chromedriver.exe");//System.setProperty("webdriver.chrome.driver",path);//储存在系统变量中,变量名为webdriver.chrome.driver,值为D:\guge\ChromeCore\chromedriver.exe// 添加chrome的配置信息ChromeOptions chromeOptions = new ChromeOptions();// 设置为无头模式//chromeOptions.addArguments("--headless");// 设置打开的窗口大小 非必要属性//chromeOptions.addArguments("--window-size=500,500");chromeOptions.addArguments("--start-maximized"); //最大化// 使用配置信息 创建driver对象RemoteWebDriver driver = new ChromeDriver(chromeOptions);webDriverThreadLocal.set(driver);}@Testpublic void maipiao() throws InterruptedException{init();WebDriver webDriver = webDriverThreadLocal.get();webDriver.get(HRWORK_LOGIN); //进入买票界面Thread.sleep(1000);webDriver.findElement(By.id("label-departStation")).clear(); //清空出发城市输入框webDriver.findElement(By.id("label-departStation")).sendKeys("周口");webDriver.findElement(By.id("label-arriveStation")).clear(); //清空目的城市输入框webDriver.findElement(By.id("label-arriveStation")).sendKeys("苏州");Thread.sleep(1000);webDriver.findElement(By.xpath("//*[@id=\"app\"]/div[2]/div[1]/div[2]/button")).sendKeys(Keys.ENTER); //使用键盘回车键的方式Thread.sleep(5000);webDriver.findElement(By.xpath("//*[@id=\"trainlistitem0\"]/div/button")).click(); //点击订票Thread.sleep(1000);webDriver.findElement(By.xpath("//*[@id=\"__next\"]/div/div[3]/div[1]/section/div[2]/ul/li[1]/button")).click(); //硬座Thread.sleep(3000); //等待几秒钟,,页面加载比较慢webDriver.findElement(By.id("nloginname")).sendKeys("手机号");webDriver.findElement(By.id("npwd")).sendKeys("密码");Thread.sleep(1000);webDriver.findElement(By.xpath("//*[@id=\"normalview\"]/p/input")).click(); //已阅读webDriver.findElement(By.id("nsubmit")).click(); //登录Thread.sleep(1000);webDriver.findElement(By.xpath("//*[@id=\"__next\"]/div/div[3]/div[1]/div[3]/div[2]/button")).click(); //添加乘客Thread.sleep(1000);webDriver.findElement(By.xpath("/html/body/div[10]/div[1]/div[2]/div/div/div[2]/div/button")).click(); //新增乘客Thread.sleep(1000);webDriver.findElement(By.xpath("/html/body/div[11]/div[1]/div[2]/div/div/div[2]/ul/li[2]/div[2]/input")).sendKeys("郭靓仔"); //姓名Thread.sleep(1000);webDriver.findElement(By.xpath("/html/body/div[11]/div[1]/div[2]/div/div/div[2]/ul/li[4]/div[2]/input")).sendKeys("41270505565****"); //证件号码Thread.sleep(1000);webDriver.findElement(By.xpath("/html/body/div[11]/div[1]/div[2]/div/div/div[2]/ul/li[5]/div[2]/input")).sendKeys("41270505565****"); //手机号webDriver.findElement(By.xpath("/html/body/div[11]/div[1]/div[2]/div/div/div[3]/button[2]")).click(); //确定添加}
}
上面主要实现了,元素定位以及元素操作
定位:
- ID定位元素:findElement(By.id(“”));
- 通过元素的html中的位置定位元素:findElement(By.xpath(“”));
操作:
- 单击.click():普通单击,键盘回车单击,鼠标单击
- 输入.sendKeys():在输入框中输入内容(登录的账号密码,出发地,目的地等)
- 清空内容.clear():清空输入框中的内容
3. 滑块
@SpringBootTest
public class CtripTest {private static final String HRWORK_LOGIN = "https://passport.ctrip.com/user/login?"; //登录private ThreadLocal<WebDriver> webDriverThreadLocal = new ThreadLocal<>();private void init(){// 加载chromedriver 是使用chorme的必要条件 google浏览器驱动System.setProperty("webdriver.chrome.driver","C:\\Program Files\\Google\\Chrome\\Application\\driver\\chromedriver.exe");//System.setProperty("webdriver.chrome.driver",path);//储存在系统变量中,变量名为webdriver.chrome.driver,值为D:\guge\ChromeCore\chromedriver.exe// 添加chrome的配置信息ChromeOptions chromeOptions = new ChromeOptions();// 设置为无头模式//chromeOptions.addArguments("--headless");// 设置打开的窗口大小 非必要属性//chromeOptions.addArguments("--window-size=500,500");chromeOptions.addArguments("--start-maximized"); //最大化// 使用配置信息 创建driver对象RemoteWebDriver driver = new ChromeDriver(chromeOptions);webDriverThreadLocal.set(driver);}@Testpublic void login() throws InterruptedException {init();WebDriver webDriver = webDriverThreadLocal.get();webDriver.get(HRWORK_LOGIN);Thread.sleep(1000); //等待几秒钟,,页面加载比较慢webDriver.findElement(By.id("nsubmit")).click(); //登录 为了弹出滑块webDriver.findElement(By.id("nloginname")).sendKeys("手机号");webDriver.findElement(By.id("npwd")).sendKeys("密码");Thread.sleep(1000);webDriver.findElement(By.xpath("//*[@id=\"normalview\"]/p/input")).click(); //已阅读webDriver.findElement(By.id("nsubmit")).click(); //登录Thread.sleep(1000);/*** 滑块的移动*/WebElement sour = webDriver.findElement(By.xpath("//*[@id=\"sliderddnormal\"]/div/div[4]/div[3]/div/i[1]")); //滑块内部WebElement ele = webDriver.findElement(By.cssSelector("#sliderddnormal > div > div.cpt-drop-box")); //整个滑道Actions actions = new Actions(webDriver);actions.dragAndDropBy(sour,ele.getSize().getWidth(),-ele.getSize().getHeight()).perform(); //要拖拽的滑块,x,y//这个目前不能滑动到特定的位置,只能直接划到头Thread.sleep(1000);if (!webDriver.getCurrentUrl().contains("/home")) //登录成功检验throw new RuntimeException("网页访问出错,请重试");}
}
3.JS/Jquery
用Js/jQuery做一个自动测试
每一个星球都有一个驱动核心,
每一种思想都有影响力的种子。
感受世界的温度,
年轻的你也能成为改变世界的动力,
百度珍惜你所有的潜力。
你的潜力,是改变世界的动力!
package com.mask;
import org.junit.Test;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
public class CtripTest01 {@Testpublic void Jstest01(){System.setProperty("webdriver.chrome.driver","C:\\Program Files\\Google\\Chrome\\Application\\driver\\chromedriver.exe");WebDriver driver = new ChromeDriver();driver.get("http://www.baidu.com");JavascriptExecutor js = (JavascriptExecutor) driver;//js.executeScript("document.getElementById('kw').value='酸菜'"); //jsjs.executeScript("$('#kw').val('酸菜')"); //jQueryjs.executeScript("document.getElementById('su').click()");}}
java selenium自动化项目实战-入门(1)相关推荐
- Selenium Web 自动化 - 项目实战(三)
Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述 2 框架更改总览 3 框架更改详解 3.1 解析新增页面目录 3.2 解析新增测试用例目录 ...
- Python和Java结合的项目实战_[项目实战] Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 [...
资源介绍 课程简介:xa0xa0 Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 教学视频 ----------------------课程目录 Python项目实战篇 ...
- Python和Java结合的项目实战
近期正在建一个网站,用于分享视频和资料,网站现在已经建好,只是还没有开放注册功能,还在调试中.待上线后大家就 可以找到自己合适的资源了. Python和Java结合的项目实战 本次视频的项目介绍,如下 ...
- Java 高并发_JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程 没有项目经验的朋友不要错过!...
JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程 没有项目经验的朋友不要错过! 1.JPG (37.82 KB, 下载次数: 0) 2018-12-3 09:40 上传 2.JPG (28 ...
- java+selenium自动化抓取51la数据
java+selenium自动化抓取51la数据 初衷 环境依赖 demo上代码 效果来个马赛克 如果觉得写的不错或者想了解更多,欢迎收藏和关注~~ 初衷 前端埋点51la,进行网站统计.51la没有 ...
- 视频教程-Java大型企业级项目实战:VOD展示系统-Java
Java大型企业级项目实战:VOD展示系统 系统分析师,项目经理,特级讲师:11年项目经验,8年教学经验:在多个大型企业级项目中担任过重要角色. 肖海鹏 ¥479.00 立即订阅 扫码下载「CSDN程 ...
- Java十一期项目实战,璞玉成器
Java十一期项目实战,璞玉成器 为了让学生所学不局限于理论,提升学员项目实战经验,检验几个月来的学习成果,1月24日下午,上海传智播客java11期班在203教室举办了项目实战答辩活动. Java视 ...
- Java程序设计与项目实战(全程实录)全新上市
图书简介: 本书从初学者学习Java编程的角度出发,根据作者多年的程序设计经验,按照科学的学习规律,由浅入深.循序渐进地向读者讲述了Java开发环境的搭建.Java基础语法知识.Java算法流程.面向 ...
- Python+Selenium自动化测试项目实战
第 1 章 自动化测试 1.1.自动化测试介绍 自动化测试就是通过自动化测试工具帮我们打开浏览器,输入网址,输入账号密码登录,及登录后的操作,总的说来自动化测试就是通过自动化测试脚本来帮我们从繁琐重复 ...
最新文章
- [armv9]-Introducing-Arm-Confidential-Compute-Architecture
- Room是怎样和LiveData结合使用的?(源码分析)
- 前端学习(1714):前端系列javascript之目录结构
- dw怎么修改html框架的宽度,Dreamweaver (dw)cs6中div标签宽度和高度设置方法
- 高性能Web动画和渲染原理系列(5)合成层的生成条件和陷阱
- 搭建GraalVM环境
- Robot Framework 自动化框架大纲
- oracle 分页_Mybatis:PageHelper分页插件源码及原理剖析
- Linux源码安装Python3.7出现的各种坑
- 完美解决:Could not open the editor: Editor could not be initialized
- 快读代码level.2
- 人物-李彦宏:李彦宏
- 使用whistle代理
- iTEXT常用属性设置
- 实时数仓-数据采集层_1
- Rhino显示左边的工具栏
- 移动互联网寒冬到来,程序员该怎么办?
- 观察者模式(行为型)
- 小程序 导航按钮列表实现navigator
- Docker-核心篇(1)-CentOS7安装Docker社区版
热门文章
- 使用ffmpeg实现视频倒放
- 时频分析-呼吸心跳信号检测方法(六)
- Win10默认图片保存格式变成是“.jfif”了,怎么改成“.jpg”格式?
- 30个物联网传感器小实验2:LED灯条、灯板
- 今日头条如何申请优质科技领域创作者
- memcache分布式实现、memcache分布式的数据同步、memcache保存session数据的实现
- 用纯CSS3绘制萌系漫画人物动态头像
- 外刊/网站公众号以一敌三的英语外刊精读公众号 英语外刊阅读
- ContextCapture Master 倾斜摄影测量实景三维建模技术应用
- 视频加密防翻录是怎样做的?