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:

解决方案:
第一种方式若报错,可以使用二三方式:

  1. 普通方式
webDriver.findElement(By.xpath("//*[@id=\"app\"]/div[2]/div[1]/div[2]/button")).click();  //普通方式
  1. 使用键盘回车的方式
webDriver.findElement(By.xpath("//*[@id=\"app\"]/div[2]/div[1]/div[2]/button")).click();  //使用键盘回车键的方式
  1. 使用鼠标点击的方式
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)相关推荐

  1. Selenium Web 自动化 - 项目实战(三)

    Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述 2 框架更改总览 3 框架更改详解   3.1 解析新增页面目录   3.2 解析新增测试用例目录 ...

  2. Python和Java结合的项目实战_[项目实战] Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 [...

    资源介绍 课程简介:xa0xa0 Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 教学视频 ----------------------课程目录 Python项目实战篇 ...

  3. Python和Java结合的项目实战

    近期正在建一个网站,用于分享视频和资料,网站现在已经建好,只是还没有开放注册功能,还在调试中.待上线后大家就 可以找到自己合适的资源了. Python和Java结合的项目实战 本次视频的项目介绍,如下 ...

  4. Java 高并发_JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程 没有项目经验的朋友不要错过!...

    JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程 没有项目经验的朋友不要错过! 1.JPG (37.82 KB, 下载次数: 0) 2018-12-3 09:40 上传 2.JPG (28 ...

  5. java+selenium自动化抓取51la数据

    java+selenium自动化抓取51la数据 初衷 环境依赖 demo上代码 效果来个马赛克 如果觉得写的不错或者想了解更多,欢迎收藏和关注~~ 初衷 前端埋点51la,进行网站统计.51la没有 ...

  6. 视频教程-Java大型企业级项目实战:VOD展示系统-Java

    Java大型企业级项目实战:VOD展示系统 系统分析师,项目经理,特级讲师:11年项目经验,8年教学经验:在多个大型企业级项目中担任过重要角色. 肖海鹏 ¥479.00 立即订阅 扫码下载「CSDN程 ...

  7. Java十一期项目实战,璞玉成器

    Java十一期项目实战,璞玉成器 为了让学生所学不局限于理论,提升学员项目实战经验,检验几个月来的学习成果,1月24日下午,上海传智播客java11期班在203教室举办了项目实战答辩活动. Java视 ...

  8. Java程序设计与项目实战(全程实录)全新上市

    图书简介: 本书从初学者学习Java编程的角度出发,根据作者多年的程序设计经验,按照科学的学习规律,由浅入深.循序渐进地向读者讲述了Java开发环境的搭建.Java基础语法知识.Java算法流程.面向 ...

  9. Python+Selenium自动化测试项目实战

    第 1 章 自动化测试 1.1.自动化测试介绍 自动化测试就是通过自动化测试工具帮我们打开浏览器,输入网址,输入账号密码登录,及登录后的操作,总的说来自动化测试就是通过自动化测试脚本来帮我们从繁琐重复 ...

最新文章

  1. [armv9]-Introducing-Arm-Confidential-Compute-Architecture
  2. Room是怎样和LiveData结合使用的?(源码分析)
  3. 前端学习(1714):前端系列javascript之目录结构
  4. dw怎么修改html框架的宽度,Dreamweaver (dw)cs6中div标签宽度和高度设置方法
  5. 高性能Web动画和渲染原理系列(5)合成层的生成条件和陷阱
  6. 搭建GraalVM环境
  7. Robot Framework 自动化框架大纲
  8. oracle 分页_Mybatis:PageHelper分页插件源码及原理剖析
  9. Linux源码安装Python3.7出现的各种坑
  10. 完美解决:Could not open the editor: Editor could not be initialized
  11. 快读代码level.2
  12. 人物-李彦宏:李彦宏
  13. 使用whistle代理
  14. iTEXT常用属性设置
  15. 实时数仓-数据采集层_1
  16. Rhino显示左边的工具栏
  17. 移动互联网寒冬到来,程序员该怎么办?
  18. 观察者模式(行为型)
  19. 小程序 导航按钮列表实现navigator
  20. Docker-核心篇(1)-CentOS7安装Docker社区版

热门文章

  1. 使用ffmpeg实现视频倒放
  2. 时频分析-呼吸心跳信号检测方法(六)
  3. Win10默认图片保存格式变成是“.jfif”了,怎么改成“.jpg”格式?
  4. 30个物联网传感器小实验2:LED灯条、灯板
  5. 今日头条如何申请优质科技领域创作者
  6. memcache分布式实现、memcache分布式的数据同步、memcache保存session数据的实现
  7. 用纯CSS3绘制萌系漫画人物动态头像
  8. 外刊/网站公众号以一敌三的英语外刊精读公众号 英语外刊阅读
  9. ContextCapture Master 倾斜摄影测量实景三维建模技术应用
  10. 视频加密防翻录是怎样做的?