还在辛苦一个个投简历?试试用web自动化海投
又是一年招聘旺季,相信不少小伙伴已经在海投简历过程中,手指酸软心力交瘁了,本文带大家从零开始编写一个自动化脚本完成简历投递,解放双手吧~
1、搭建环境启动浏览器:
1、安装java,安装自己习惯的IDE,例如IDEA或eclipse等等。
2、创建一个maven的项目:
在pom文件中添加如下selenium依赖java库,用于构建脚本客户端。
<dependencies><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.141.59</version></dependency>
</dependencies>
3、下载自己浏览器配套版本的webdriver应用。
注意检查自己的浏览器版本,下载对应版本的driver。推荐使用chrome浏览器进行自动化测试哦~
https://registry.npmmirror.com/binary.html?path=chromedriver/
4、通过在脚本中调用webdriver来启动浏览器以完成后续的自动化操作。
//指定chromedriver所在位置。
System.setProperty("webdriver.chrome.driver","E:\\AutoTools\\chromedriver\\98\\chromedriver.exe");
//实例化操作,打开浏览器。
WebDriver chrome=new ChromeDriver();
//设置一下浏览器的位置和大小
chrome.manage().window().setPosition(new Point(300,30));
chrome.manage().window().setSize(new Dimension(1600,900));
//1、访问拉勾
chrome.get("https://www.lagou.com/");
接下来需要对网页上的元素来进行定位,从而完成各个元素的操作流程。
2、web自动化最核心的操作:元素定位
元素定位:其实就是在html文档中尽可能清楚地描述出来一个或一组元素的特征,能够确定找到元素进行操作。
使用chrome开发者工具查看html元素并定位的小技巧:
按下F12或者页面上右键检查,就可以打开开发者工具,查看网页的html文档。
用ctrl+f的搜索栏可以验证表达式的正确性和搜索到的元素结果。
html元素的构成: 一个网页由各种元素构成一个html文档,实际上html本身也是一个元素。
元素由开始标签、内容和结束标签三部分组成,而开始标签中包含以属性="属性值"格式呈现的属性。
元素开始标签(tag) 属性="属性值" 元素内容 元素结束标签
<button type="button" id="cboxClose">close</button>
定位元素的本质就是让计算机根据元素的特征能够找到这个元素,就像找人的时候描述清楚对方的特征,因为完成元素定位根据自己的需求,将元素的特征描述清楚即可。
而基于html文档格式,定位时能使用用的特征只有四种: 元素名 、属性、元素文本内容、元素层级关系。
2.1、selenium 8大定位方法
对应的,在selenium中,提供了findelement和findelements方法用于完成元素定位,并且可以使用8种定位方式进行元素特征的描述,分别是:
id: 通过元素的id属性的值定位, 相当于提供人的身份证号。
name: 元素的name属性值, 相当于人的名字。
id和name 都是属性,值是由开发取的,通常开发会保证id不重复,由于简单,id也是比较常用的定位方法
classname: class属性的值。 相当于人的穿衣风格。
tagname: 元素名。相当于人的类型
这两个定位方法基本上很难唯一确定一个元素。
但是实际上:id name classname 和 tagname在selenium中都是基于css selector方法来完成定位的。
linktext: 超链接的文本内容 相当于人给自己安的名头。
partiallinktext: 超链接的文本的部分内容 相当于名头中的部分词汇。
这两个定位方法要求元素一定是a元素,即超链接元素的文本。
xpath:xml 路径语言。
css selector: css选择器
html中是按照元素层级来排列的,所以一定会有唯一的层级表示能够唯一找到元素。
xpath和css Selector是可以使用层级表示的定位方法,因此这两个方法一定能定位到元素,掌握其中一种即可从容应对元素定位。
2.2 xpath和css 选择器语法
描述元素层级的语法如下:
xpath:xml 路径语言。 基本语法为://元素名[限制条件]/元素名[限制条件]
限制条件的表达式可以是属性条件表达式或序号。
xpath开头使用/表示从根层级html开始,固定写法是/html/body/…………
//开头表示在文档任意层级开始。
例如:
//*[@id=“jobsContainer”]/div[2]/div[1]/div[1]/div[1]/div[1]/div/div[2]/div[12]
css selector: css选择器。基本语法为:元素名[限制条件]>元素名[限制条件]
例如:
#jobsContainer > div.mine-container__1oUnf > div.filter-box__TWLOX > div:nth-child(1) > div.multi-chosen__1bxJo > div.city-warp__39DWO > div > div.hot-city__1Sprg > div:nth-child(12)
描述元素限制条件的基本语法:
元素名可以用表示任意类型。在css选择器中用表示任意类型时,可以省略*号。
xpath:
元素名[@属性=‘属性值’] :描述一个具有特定属性值的元素
元素名[text()=‘文本内容’]:描述一个具有特定文本内容的元素
元素名[数字N]:描述一个是其父元素第N个孩子的元素。
css:
元素名[属性=‘属性值’] :描述一个具有特定属性值的元素。
css选择器有些常用的特殊简便表达,例如:
#idV :等价于 *[id=‘idv’]
.classV: 等价于 [class=‘classV’]
最常用的定位表达式:
//元素名[text()=‘文本内容’] 例如://div[text()=‘长沙’]
在保证元素定位准确的同时能够大大提高定位表达式的可读性,便于维护自动化测试脚本。
3、定位元素完成筛选职位流程
掌握了定位元素的方法之后,将需要实现的简历投递流程通过selenium代码实现
//2、关闭弹窗
WebElement cboxClos = chrome.findElement(By.id("cboxClose"));
cboxClos.click();
//等待浏览器响应,让代码暂停1秒钟
Thread.sleep(2000);
//3、搜索软件测试
chrome.findElement(By.cssSelector("input[placeholder=\"搜索职位、公司或地点\"]")).sendKeys("软件测试");
chrome.findElement(By.cssSelector("#search_button")).click();
//4、设置选项
chrome.findElement(By.xpath("//div[text()='长沙']")).click();//将鼠标悬停到薪资要求
WebElement salary = chrome.findElement(By.xpath("//span[text()='薪资要求']"));
//悬停实现
//通过selenium提供的动作链来实现自动化测试。
Actions act=new Actions(chrome);
act.moveToElement(salary).perform();//悬停之后点击 10k-15k
chrome.findElement(By.xpath("//*[text()='10k-15k' and not(@class)]")).click();
//等待浏览器
Thread.sleep(1000);//将鼠标悬停到学历要求
WebElement xueli = chrome.findElement(By.xpath("//span[text()='学历要求']"));
act.moveToElement(xueli).perform();//悬停之后点击 本科
chrome.findElement(By.xpath("//*[text()='本科' and not(@class)]")).click();
4、实现批量点击职位并进行投递
在进行职位选择时,会打开新窗口展示职位,因此过程中需要进行窗口的切换。
最终通过循环操作,完成各个职位的点击与投递操作。
//在打开新窗口之前,获取一下句柄(浏览器窗口的编号)
String homepage = chrome.getWindowHandle();
System.out.println("首页的句柄是" + homepage);//定位所有的职位信息元素列表,获取职位个数
List<WebElement> joblist = chrome.findElements(By.xpath("//div[@class='item__10RTO']"));
int jobcount=joblist.size();//通过循环,按职位数重复投简历的动作
for (int i = 1; i <= jobcount; i++) {//findelement如果能找到多个元素,默认用第一个。会打开一个新窗口。chrome.findElement(By.xpath("//div[@id='jobList']//div[@class='item__10RTO'][" + i + "]//a")).click();//切换到新窗口//获取到所有的窗口的句柄Set<String> windowHandles = chrome.getWindowHandles();System.out.println("打开新窗口之后所有的句柄是:" + windowHandles);//遍历两个句柄,判断是不是homepage,不是homepage就切换过去。for (String windowHandle : windowHandles) {if (!windowHandle.equals(homepage)) {//切换窗口到指定句柄。chrome.switchTo().window(windowHandle);//退出循环break;}}//判断是否有自己感兴趣的selenium关键字//if (chrome.getPageSource().contains("selenium")) {//6、投递简历chrome.findElement(By.xpath("//a[text()='投简历']")).click();Thread.sleep(10000);}//关闭新窗口,回到首页chrome.close();chrome.switchTo().window(homepage);}
房子要一层一层盖,知识要一点一点学。大家在学习过程中要好基础,多上手实操,话不多说,这里狠狠上一次干货!我熬夜整理好的各阶段(功能、接口、自动化、性能、测开)技能学习资料+实操讲解,非常适合私下里学习,比找资料自学高效多了,分享给你们。
领取关 w/x/g/z/h:软件测试小dao
敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。
还在辛苦一个个投简历?试试用web自动化海投相关推荐
- 投简历用什么邮箱最好?投简历怎么发邮件?
作为一名上市公司HR主管,最近收到很多朋友留言,问我投简历用什么邮箱好,投简历怎么发邮件.本文为个人多年总结的一些建议,有助于大家提高面试机会,早日进入自己理想的公司! 在招聘旺季,每次打开邮箱都有几 ...
- 一直找不到软件测试工作?你简历投对了吗?拿了12个offer,才明白投简历的真谛!
每次逛测试群,或者逛贴吧,总会看到一些关于投递简历找工作的消极声音: 找测试工作好难,投了好多简历,都没有HR给我回复... 感觉xx这个城市的招聘都被我投完了,极少的面试,投出去都石沉大海了... ...
- 找不到工作?!请确认你投简历的姿势对了么?
感觉每次逛测试群,或者逛贴吧,总会看到一些关于投递简历找工作的消极声音: 找测试工作好难,投了好多简历,都没有HR给我回复... 感觉xx这个城市的招聘都被我投完了,极少的面试,投出去都石沉大海了.. ...
- [YTU]_2532(投简历)
题目描述 小华历经12寒窗苦读,又经历4年大学磨砺,终于毕业了,随着毕业季的到来,找工作也日益紧张起来.由于要面试不同的公司,因此小华需要准备不同的简历.当然最基本的信息是必不可少的,基本信息:姓名. ...
- YTU.2532: 投简历
2532: 投简历 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 1126 Solved: 802 [ Submit][ Status][ We ...
- 如何获取招聘源?在投简历前获取更多招聘信息...
前言 又快到了一年一度的春招和毕业季.身边还有许多准备从事IT行业的朋友没有找到工作,基兄特此整理了一份关于自己找工作的经验(也参考了网上的部分数据和内容). 本文的内容主要为在投递简历时招聘源的招聘 ...
- 2022年,计算机保研er需要海投吗?
写在前面 近几年,受疫情影响很多学校的夏令营改为线上举办,与线下夏令营相比,线上夏令营开展时间短并且地理位置不受限,这让保研er投递多所院校甚至多线程参加夏令营成为了可能.另外,在保研内卷十分严重的今 ...
- 弘辽科技:玩转海投流量快速起爆
大家都知道运营好一家京东店的核心三指标是展现.点击.转化三者缺一不可,又层层递进的,那么具体都需要操作哪些呢? 提到展现,就又不得不提到海投,但是很多商家对海投还是不怎么了解的,所以今天想要为大家介绍 ...
- 【神回复】程序员30多岁还在投简历找工作,怎么看?
今天有一个社区网友,微信给我留言,程序员30多岁还在投简历找工作,亚历山大,怎么看? 我怎么看?其实这个问题还真没有想过,因为目前还有遇见朋友所说的问题,但是我也有话要说. 程序员在三十岁的时候,投简 ...
最新文章
- 屠龙之路_坚持就是胜利_NinthDay
- (一)初识java ---我的第一个java程序
- [XSY3383]多线程(笛卡尔树,DP)
- Chrome英文版离线安装包下载
- Springboot 2.0选择HikariCP作为默认数据库连接池的五大理由
- jenkins 手动执行_想知道如何用Jenkins自动执行Python脚本输出测试报告?
- mysql一共有多少引擎_MySQL存储引擎你们知道多少?
- OpenStack pike版 安装openstack服务(4) 续安装openstack服务(3)
- php 禁止浏览器直接访问网页_PHP禁止直接从浏览器输入地址访问PHP文件
- 欧阳娜娜从阿里跳槽网易:阿里P8堪称教科书级别的面试现场!最后一个问题亮了...
- Mac安装MongoDB
- 【用Java模拟KTV点歌系统】
- 物联网应用层的关键技术有哪些
- Django | ORM choices参数详解
- 软件开发过程与项目管理
- NYOJ 33 蛇形填数
- PCB射频电路四大基础特性
- exceljs 导入导出 excel 文件
- PayPal提现被退回的解决办法?(教程和费用)
- 小型SDDC建设攻略