整理的selenium WebDriver提供的8种元素定位方法

selenium WebDriver提供的8种元素定位方法:
(1)find_element_by_id() :id 定位 ,顾名思义,就是通过标签的id属性值来定位元素
(2) find_element_by_name() :name 定位,顾名思义,就是通过标签的name属性值来定位元素
(3)find_element_by_tag_name() :tag 定位 ,通过标签名(tag name)定位,不太推荐此用法,因为一个页面会有很多相同的标签。
(4)find_element_by_class_name() :class 定位 ,顾名思义,就是通过标签的class属性值来定位元素。
(5)find_element_by_link_text() :link_text 定位 ,通过元素标签对之间的文字信息来定位元素。
(6) find_element_by_partial_link_text() :partial link 定位,是对上面link定位的补充,如果标签对之间的内容很长时,就取这部分文字的唯一标识的文字内容即可。
(7)find_element_by_xpath() :XPath 定位 ;利用元素属性定位、利用元素的绝对路径定位、利用层级与属性结合定位等
(8)find_element_by_css_selector():CSS 选择器可以较为灵活地选择控件的任意属性,一般情况下,CSS 定位速度比 XPath定位速度快。

下面以‘https://www.baidu.com/’为例写的demo:

from selenium import webdriver
import time

driver = webdriver.Chrome()  # 前提:安装了谷歌浏览器和驱动

// 使用get方法,打开百度首页
driver.get('https://www.baidu.com')

# find_element_by_id()方法定位页面上的元素
# send_keys()做输入操作
# driver.find_element_by_id('kw').send_keys('selenium')

# find_element_by_name()方法定位页面上的元素
# driver.find_element_by_name('wd').send_keys('selenium')

# find_element_by_class_name()方法定位页面元素
# driver.find_element_by_class_name('s_ipt').send_keys('selenium')

# find_element_by_tag_name 通过标签名(tag name)定位百度输入框 不太推荐此用法,因为一个页面会有很多相同的标签
# driver.find_element_by_tag_name('input')

# click() 单击操作
# driver.find_element_by_id('su').click()

# find_element_by_link_text() 通过元素标签对之间的文字信息来定位元素
# driver.find_element_by_link_text('新闻').click()

# find_element_by_partial_link_text()  是对上面link的补充,如果标签对之间的内容很长时,就取这部分文字的唯一标识的文字内容即可
# driver.find_element_by_partial_link_text('新').click()

# xpath 通过元素的属性值来定位元素
# driver.find_element_by_xpath('//*[@id="kw"]').send_keys('selenium')
# driver.find_element_by_xpath('//*[@id="su"]').click()

'''
find_element_by_css_selector定位
CSS 选择器可以较为灵活地选择控件的任意属性,一般情况下,CSS 定位速度比 XPath定位速度快
css定位有很多种方法,这里就只介绍两种常用的
'''
# css定位  通过class定位
# driver.find_element_by_css_selector('.s_ipt').send_keys('selenium')
# driver.find_element_by_css_selector('.s_btn').click()

# css定位  通过id定位
driver.find_element_by_css_selector('#kw').send_keys('selenium')
driver.find_element_by_css_selector('#su').click()

# 强制等待3秒,为了看清楚执行效果
time.sleep(3)

# 通过 quit()关闭浏览器
driver.quit()

当然,除了以上的8种写法,WebDriver 还提供了另外一套写法,即统一调用find_element()方法,通过 By 来声明定位,并且传入对应定位方法的定位参数。

使用find_element()定位元素demo如下:

import time

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

driver.get('https://www.baidu.com')

'''
find_element(By.ID,"kw")
find_element(By.NAME,"wd")
find_element(By.CLASS_NAME,"s_ipt")
find_element(By.TAG_NAME,"input")
find_element(By.LINK_TEXT,"新闻")
find_element(By.PARTIAL_LINK_TEXT,"新")
find_element(By.XPATH,"//*[@class='bg s_btn']")
find_element(By.CSS_SELECTOR,"span.bg s_btn_wr>input#su")
'''
driver.find_element(By.ID, 'kw').send_keys('selenium')
driver.find_element(By.ID, 'su').click()

time.sleep(3)

driver.quit()
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值