还在辛苦一个个投简历?试试用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自动化海投的主要内容,如果未能解决你的问题,请参考以下文章

秋招面试现状,附个人整理Android大厂秋招面试题合集

秋招面试现状,附个人整理Android大厂秋招面试题合集

下一阶段的小目标

如何制作高水平简历?

程序员面试的时候有哪些技巧?

面试经验-总集