接着上章继续
一.元素定位
元素定位是最重要环节,元素的定位必须是唯一的,话不多说,来看看元素定位的方法
1.id,name,class定位
id定位就是通过元素的id属性来定位元素ID
根据以上网页的显示的id,selenium的写法
driver.findElement(By.id("kw")).click
selenide的写法
$(By.id("kw")).click();
用以上网页的显示还可以使用name定位
selenium的写法
driver.findElement(By.name("wd")).click
selenide的写法
$(By.name("wd")).click();
用以上网页的显示还可以使用class定位
selenium的写法
driver.findElement(By.className("s_ipt")).click
selenide的写法
$(By.className("s_ipt")).click();
2.tag定位
我几乎没有用过tag来定位,因为tag定位重复率太高,所以能识别元素的概率太低,不太推荐
selenium的写法
driver.findElement(By.tagName("input")).click
selenide的写法
$(By.tagName("input")).click();
3.link定位
selenium的写法
driver.findElement(By.linkText("人民网")).click()
selenide的写法
$(By.linkText("人民网")).click();
4.partial link定位
partial link定位是对link定位的一种补充,通过文本链接的一部分文本来定位元素的方法,可以只取一部份,只要是可识别就行
selenium的写法
driver.findElement(By.partialLinkText("人民")).click()
selenide的写法
$(By.partialLinkText("人民")).click();
看了以上四种定位方法,是不是觉得selenium的写法太繁琐了,selenide就简单多了,所以我决定放弃selenium,只学selenide[奸笑],下面的定位方法,我就不再写selenium的写法啦[大笑]
5.xpth定位
用了以下几种方法式定位,还是有很多没有ID,没有name,也没有class,反正以上四种定位都无法使用.那我们就只能使用xpth定位,刚开始我也以为xpth 定位很难,没有想到其实也有捷径可以取到xpth
(1).绝对路径
看以下图(刚才用演示ID,name定位),在网页上定好位置,点击右键-》Copy->Copy full xpth ,这样就把把路径复制了,然后粘贴在" "双引号里面
$(By.xpath("/html/body/div[2]/div[1]/div/div[1]/div/form/span[1]/input")).click();
(2).元素属性定位
用上面的图进行定位,元素属性有id,name,button,class,input等等
// // 表示当前页面某个目录下;
// input 表示定位元素的标签名;
// [@id='kw'] 表示这个元素的 id 属性值等于 kw;
$(By.xpath("//input[@name='wd']"))//通过name属性值来定位 $(By.xpath("//input[@id='kw']"))//通过id属性值来定位$(By.xpath("//input[@class='s_ipt']"))//通过class属性值来定位$(By.xpath("//input[contains(@class,'ipt')]"))//通过class属性部份值来定位 $(By.xpath("//label[contains(text(),'百科')]"))//字符定位 $(By.xpath("//input[@id='kw' and @class='su']/span/input"))//使用多个属性定位
(3).层级与属性结合
如果元素本身没有唯一可识别的元素属性值,那可以查找其上一级元素,如果它的上一级元素有唯一可识别的属性值,就可以拿来使用
$(By.xpath("//span[@class='bg s_ipt_wr']/input"))//span[@class='bg s_ipt_wr'] 通过 class 属性定位到父元素,后面/input 就表示父元素下面的子元素
$(By.xpath("//span[@class='bg s_ipt_wr']/input"))//span[@class='bg s_ipt_wr'] 通过 class 属性定位到父元素,后面/input 就表示父元素下面的子元素
今天的元素定位就记录完毕了[666][击掌]