多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] **前言** 自动化只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告。 <br /> ## **一、查看页面元素:** 以百度搜索框为例,先打开百度网页 1. 将箭头移动到百度搜索输入框上,输入框高亮状态 2. 下方红色区域就是单位到输入框的属性: `<input id="kw" class="s_ipt" type="text" autocomplete="off" maxlength="100" name="wd">` ![](https://img.kancloud.cn/c5/b5/c5b5b0c89cc0bf9a2fc682dad56e6801_690x392.png) <br /> ## **二、元素定位:find\_element\_by\_id()** 1. 从上面定位到的元素属性中,可以看到有个id属性:id="kw",这里可以通过它的id属性单位到这个元素。 2. 定位到搜索框后,用send\_keys()方法 ![](https://img.kancloud.cn/97/83/9783d79250865460ebe6acbf16a070b3_638x210.png) <br /> 元素定位:find\_element\_by\_name()     1.从上面定位到的元素属性中,可以看到有个name属性:name="wd",这里可以通过它的name属性单位到这个元素。     说明:这里运行后会报错,说明这个搜索框的name属性不是唯一的,无法通过name属性直接定位到输入框 ![](https://img.kancloud.cn/0a/cc/0acc1f0f1a842753919bb399472b0ae8_623x209.png) <br /> 元素定位:find\_element\_by\_class\_name()     1.从上面定位到的元素属性中,可以看到有个class属性:class="s\_ipt",这里可以通过它的class属性定位到这个元素。 ![](https://img.kancloud.cn/2d/60/2d60f9a9158cfbeffdab1faacb0d0008_661x212.png) <br /> 元素定位:find\_element\_by\_tag\_name()     1.从上面定位到的元素属性中,可以看到每个元素都有tag(标签)属性,如搜索框的标签属性,就是最前面的input     2.很明显,在一个页面中,相同的标签有很多,所以一般不用标签来定位。 ![](https://img.kancloud.cn/7d/9b/7d9b9f7d4fba42b40f20a2d5d3813be4_655x209.png) <br /> 元素定位:find\_element\_by\_link\_text()     1.定位百度页面上"hao123"这个按钮 ![](https://img.kancloud.cn/42/36/4236779ae92dad1196e1d6c07f3ea991_690x337.png) 查看页面元素: `<a href="https://www.hao123.com" target="_blank" class="mnav c-font-normal c-color-t">hao123</a>` <br /> 2. 从元素属性可以分析出,有个href = "http://www.hao123.com 说明它是个超链接,对于这种元素,可以用以下方法 ![](https://img.kancloud.cn/71/4d/714d560f09cbfe82e437414cfee1a2b6_659x220.png) <br /> 元素定位:find\_element\_by\_partial\_link\_text()     1.有时候一个超链接它的字符串可能比较长,如果输入全称的话,会显示很长,这时候可以用一模糊匹配方式,截取其中一部分字符串就可以了     2.如“hao123”,只需输入“ao123”也可以定位到 ![](https://img.kancloud.cn/38/9a/389ad0643c0faffa833d44bd5d40d397_681x211.png) <br /> 元素定位:find\_element\_by\_xpath()     1.以上定位方式都是通过元素的某个属性来定位的,如果一个元素它既没有id、name、class属性也不是超链接,这么办呢?或者说它的属性很多重复的。这个时候就可以用xpath解决     2.xpath是一种路径语言,跟上面的定位原理不太一样。 ![](https://img.kancloud.cn/74/f8/74f846eef28e5ba3816fc9ea74a6b4d4_688x500.png) <br />  元素定位:find\_element\_by\_css\_selector()     1.css是另外一种语法,比xpath更为简洁,但是不太好理解。这里先学会如何用工具查看,后续的教程再深入讲解。 ![](https://img.kancloud.cn/de/7a/de7a2dd02592eeaea3d6bdc2ef16210f_690x320.png) ## **总结:** selenium的webdriver提供了八种基本的元素定位方法,前面六种是通过元素的属性来直接定位的,后面的xpath和css定位更加灵活,需要重点掌握其中一个。 1.通过id定位:find\_element\_by\_id() 2.通过name定位:find\_element\_by\_name() 3.通过class定位:find\_element\_by\_class\_name() 4.通过tag定位:find\_element\_by\_tag\_name() 5.通过link定位:find\_element\_by\_link\_text() 6.通过partial\_link定位:find\_element\_by\_partial\_link\_text() 7.通过xpath定位:find\_element\_by\_xpath() 8.通过css定位:find\_element\_by\_css\_selector()