还在辛苦一个个投简历?试试用web自动化海投
Posted 软件测试呀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了还在辛苦一个个投简历?试试用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自动化海投的主要内容,如果未能解决你的问题,请参考以下文章