300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > selenium+python:元素定位的八种方式

selenium+python:元素定位的八种方式

时间:2023-08-16 11:47:40

相关推荐

selenium+python:元素定位的八种方式

id,name,class_name(这三种是元素的属性,而selenium单独针对这三种属性提供了对应的定位方法)

tag_name(这个针对标签名称定位)

link_text,partial_link_text(这个针对a标签,就是文本超链接定位)

XPath(这个基于元素的路径定位)

css定位 (这个基于元素选择器):

元素定位八种方式

id定位:

driver.find_element(By.ID,value="属性值")

name定位:

driver.find_element(By.NAME,value="属性值")

class_name定位(使用元素的class属性):

l1=driver.find_element(By.CLASS_NAME,value="属性值").click()

tag_name定位(标签名称<标签名.../>):

如果只有一个相同名称的标签可以用find_element

driver.find_element(By.TAG_NAME,value="input")#定位第一个元素

如果有多个相同的标签需要用find_elements

driver.find_elements(By.TAG_NAME,value="input")[2].click()#定位第二个元素

link_text定位 (定位超链接 a标签):

driver.find_elements(By.LINK_TEXT,value="访问 新浪 网站")

partial_link_text定位(定位超链接 a标签 模糊):

driver.find_elements(By.PARTIAL_LINK_TEXT,value="访问")

driver.find_elements(By.PARTIAL_LINK_TEXT,value="访问 新浪 网站")

XPath定位 (基于元素路径):

绝对路径定位:/单斜杠

driver.find_element(By.XPATH,value="/html/body/div[2]/div[4]/div/div[2]/button[1]").click()

相对路径://双斜杠

driver.find_element(By.XPATH,value="//button[@id='applyMail']").click()#任意属性都可以

或者:

driver.find_element(By.XPATH,value="//*[@id='applyMail']").click()#(*)星号代表所有元素,但是此方法,需要遍历一遍所有元素查找,速度慢

driver.find_element(By.XPATH,value="//button@id='applyMail' and @class='btn btn-primary btn-lg']").click()

建议:

一般建议使用指定标签名称,不使用*代替,效率慢无论是绝对路径还是相对路径,/后面必须要为元素的名称或者*在工作中,如果能使用相对路径绝对不使用绝对路径 太长;一旦页面结构发送变化(比如开发加个div层级就会发送变化,定位就失效了)

XPATH定位扩展:

//*text()="xxx"----------------------------------------------文本内容是xxx的元素

//*[contains(@属性,"xxx")]-------------------------属性中含有xxx的元素(移动端经常会用到)

//*[starts-with(@属性,"xxx")]----------------------属性以xxx开头的元素

css定位 (元素选择器)推荐使用,比XPATH效率高,其他定位有的css定位差不多都有非常灵活:

id选择器class选择器元素选择器属性选择器层级选择器 id选择器

driver.find_element(By.CSS_SELECTOR,value="#applyMail")#选择id属性值(格式#id)

class选择器

driver.find_element(By.CSS_SELECTOR,value=".btn-primary")

组合在一起定位

元素选择器

driver.find_element(By.CSS_SELECTOR,value="div")#标签

driver.find_element(By.CSS_SELECTOR,value="随机邮箱")#界面元素

属性选择

driver.find_element(By.CSS_SELECTOR,value="[id='applyMail']")

层级选择器

>与空格两个方式的区别:

>:表示必须为子元素;空格:则不用(可以是孙子辈,或者重孙辈.....)

备注:虽然现在浏览器可以复制路径进行定位,但不建议使用,毕竟层级接口一旦改变定位就失效了(性能低)

定位一组元素:elements

driver.find_elements(By.CSS_SELECTOR,value="div button")[1].click()#定位一组元素使用elements#定位申请邮箱按钮

代码解释:

find_element(By.ID,value="")(find:查找,element:元素,By:通过,ID:id属性)

以前的写法find_element_by_id已经不可用了,这样写会报错

PS:一般情况下id属性值是唯一的,name可以重名,class_name可以有多个

快捷键导包:

常用方法:

元素输入方法:浏览器对象.send_keys("内容")关闭浏览器方法:浏览器对象.quit()打开浏览器url:浏览器对象.get(url)获取浏览器驱动对象方法:浏览器对象=webdriver.chrome()导包:from selenium import webdriver

标签解释:

标签:如果标签的类型type=text,那这个元素就是文本框,如果type=submit或者botton的时候,那这个元素就是一个按钮

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。