两类八种元素定位方法

1.两类方法比较

第一类:

ele1 = driver.find_element_by_xxx("")
ele2 = driver.find_elements_by_xxx("")

第二类:

from selenium.webdriver.common.by import By

ele3 = driver.find_element(By.xxx,"")
ele4 = driver.find_elements(By.xxx,"")

xxx代表定位属性的八种方法,下文会具体说明

ele1、ele3对应的方法总结如下:(这类方法中的8种方法都具有如下特点)

①返回的是WebElement类;

②一次只会定位到一个元素,如果有多个元素,则会返回第一个元素;

③如果使用元素定位表达式定位不到任何元素,则会在代码执行过程中抛出异常:NoSuchElemenetExcept

ele2、ele4对应的方法总结如下:(这类方法中的8种方法都具有如下特点

①返回的是一个列表

②如果某个元素定位表达式匹配到了多个元素,则列表种存放的就是定位到的多个元素

③如果匹配不到,则返回 一个空列表,因此如果需要操作的话需要加上索引来指定需要操作的那个元素。

ele2 = driver.find_elements_by_xxx("")[0].click()
ele4 = driver.find_elements(By.xxx,"")[1].click()

2.第一类方法

2.1 id

通过标签中的id属性的值来定位元素,需要标签中又id属性

driver.find_element_by_id("IamID")
driver.find_elements_by_id("IamID")

2.2 name

通过标签中的name属性的值来定位元素,需要标签中有name属性

driver.find_element_by_name("second")
driver.find_elements_by_name("second")

2.3 class_name

通过标签中的class name属性的值来定位元素。如果class属性值有空格(本质:这个class属性的值是由多个class属性的值组成),截取部分属性值来定位元素(本质:表示获取到其中的一个class属性的值来定位元素)

eles = driver.find_element_by_class_name("Dream")
eles = driver.find_elements_by_class_name("Dream")

 2.4 tag_name

通过标签中标签名来定位元素。

driver.find_element_by_tag_name("input")
driver.find_elements_by_tag_name("input")

2.5 link_text

通过超链接标签中的全部文本内容来定位元素(只适用于 a 标签)。

driver.find_element_by_link_text("全部文本")
driver.find_elements_by_link_text("全部文本")

2.6 partial_link_text

通过超链接标签中的全部文本内容来定位元素(只适用于 a 标签)。

driver.find_element_by_partial_link_text("部分文本")
driver.find_elements_by_partial_link_text("部分文本")

2.7 css_selector

根据css选择器来定位元素,简单用法,通过页面复制

driver.find_element_by_css_selector('#ID')
driver.find_elements_by_css_selector('#ID')

2.8 xpath

根据xpath表达式来定位元素,简单用法,通过页面复制

driver.find_element_by_xpath('//*[@id="ID"]')
driver.find_elements_by_xpath('//*[@id="ID"]')

3.1 第二类方法

第二类方法与第一种方法类似,只是在在语法格式上有区别,并且第二类方法需要额外导入:

from selenium.webdriver.common.by import By

driver.find_elements_by_xpath('//*[@id="ID"]')
driver.find_elements(By,XPATH,'//*[@id="ID"]')

4 总结

①id、name
定位元素比较简单,但是很多元素没有ID和NAME属性
②class_name
大部分元素都有class属性,但是网页中经常会有多个元素拥有相同的标签名
①id、name
定位元素比较简单,但是很多元素没有ID和NAME属性
②class_name
大部分元素都有class属性,但是网页中经常会有多个元素拥有相同的标签名
③tag_naem
通过标签名来定位,类似于class属性,每个元素都有标签名,但是网页中经常会有多个元素拥有相同的标签名;比如一个网页有100个链接可能都是<a>标签,所以他们标签名相同,也是只能定位第一个
例:driver.findElement(By.TAG_NAME,’a’)
④link_text、partial_link_text
只适用于<a>标签或者<a>标签的子元素的文本,不适用于所有的元素。
⑤css_selector、xpath
这两种方式几乎可以定位所有的元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值