【心善渊&Selenium3.0基础】— 5、Selenium基本元素定位

文章目录1、什么是元素定位2、Selenium元素定位常用API(1)`By_id`说明:示例:复数形式:异常总结:(2)`by_name`说明:示例:复数形式:(3)`by_class_name`说明:示例:复数形式:(4)by_tag_name说明:示例:复数形式:总结:(5)by_link_text说明:示例:复数形式:(6)by_partial_link_text说明:示例:复数形式:1、什么是元素定位元素定位就是查找HTML元素的过程。HTML元素指的是从开始标签(start tag)到结
摘要由CSDN通过智能技术生成

1、什么是元素定位

  • 元素定位就是查找HTML元素的过程。
  • HTML元素指的是从开始标签(start tag)到结束标签(end tag)的所有代码。
  • 操作页面元素之前,首先要对元素进行定位,所以定位是自动化脚本编写的开始。
  • 通常使用find_elementfind_elements 方法来定位元素。
    • find_element使用给定的方法定位和查找一个元素
    • find_elements使用给定的方法定位和查找所有元素,并以列表(list)的形式返回。

2、Selenium元素定位常用API

(1)By_id

说明:

当所定位的元素具有id属性的时候我们可以通过by_id来定位该元素。

例如:打开百度首页,定位搜索框。
在这里插入图片描述
搜索框页面源代码:属性id值为kw。

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="255" autocomplete="off">
示例:
"""
1.学习目标
    必须掌握selenium中元素定位方法,id定位方法
2.操作步骤(语法)通过元素id属性定位
    driver.find_element_by_id(id属性的值)
3.需求
    在百度页面中使用id属性定位百度输入框
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep

# 2.打开浏览器(获取浏览器对象)
driver = webdriver.Chrome()

# 3.输入网址
url = "http://www.baidu.com"
driver.get(url)
sleep(2)

# 4.元素定位(id定位方法),百度输入框
"""
注意:
如果有多个相同属性值的元素,单数形式,定位第一个.
"""
srk = driver.find_element_by_id("kw")
# 打印srk对象
print(srk)

# 查看元素对应的源码
print(srk.get_attribute("outerHTML"))

# 5.关团浏览器
driver.quit()

"""
输出结果:
 <selenium.webdriver.remote.webelement.WebElement 
 (session="6fbad6d63614e1cae6cd346153a7105e", 
 element="0dd374b6-74ed-4f4c-b610-5c772fd8c366")>
 
 我们可以看到srk是一个WebElement类型的对象。
 查看元素对应的源码如下:
 <input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
 
 说明我们已经把百度首页的输入框获取到了。
"""
复数形式:
"""
学习目标
    复数形式
        复数定位形式:driver.find_elements_XXX
        复数定位,返回的列表类型数据<list>
        遍历列表操作具体元素
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep

# 2.打开浏览器
driver = webdriver.Chrome()
# 3.输入网址
url = "http://www.baidu.com"
driver.get(url)
sleep(2)

# 4.通过by_id复数定位
srk = driver.find_elements_by_id("kw")
# 5.查看返回结果数据类型
print("结果数据类型", type(srk))
print("元素个数", len(srk))

# 6.遍历结果,查看源码
for i in srk:
    # 查看元素对应的源码
    print(i.get_attribute("outerHTML"))

# 7.关团浏览器
driver.quit()

"""
结果数据类型 <class 'list'>
元素个数 1
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
"""
异常总结:
异常1:
AttributeError:'list' object has no attribute 'get_attribute' :
表示定位元素返回的是一个列表格式,原因:使用复数定位方式 find_elements获取的定位

异常2
NoSuchElementException :
表示元素没找到元素,原因是定位方式出现问题,有一种情况是属性值写错了。

(2)by_name

说明:

当所定位的元素具有name属性的时候,我们可以通过by_name来定位该元素。

如上图中的百度搜索页面

搜索框页面源代码:属性name值为wd

<input id=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值