Selenium3+python3自动化(三十二)--4类32种定位方法(find_element_by_xx, find_elements_by_xx, find_element)

前言

slenium自动化,最重要的四步:定位元素、操作元素、获取返回值、断言,可见定位方法的重要性。

一、三十二种定位方法

下面八种是大家熟悉的,经常会用到的

1.id定位:find_element_by_id(id)

2.name定位:find_element_by_name(name)

3.class定位:find_element_by_class_name(name)

4.tag定位:find_element_by_tag_name(name)

5.link定位:find_element_by_link_text(link_text)

6.partial_link定位:find_element_by_partial_link_text(link_text)

7.xpath定位:find_element_by_xpath(xpath)

8.css定位:find_element_by_css_selector(css_selector)

 

下面八种是复数形式

1.id复数定位:find_elements_by_id(id)

2.name复数定位:find_elements_by_name(name)

3.class复数定位:find_elements_by_class_name(name)

4.tag定位:find_elements_by_tag_name(name)

5.link定位:find_elements_by_link_text(link_text)

6.partial_link定位:find_elements_by_partial_link_text(link_text)

7.xpath定位:find_elements_by_xpath(xpath)

8.css定位:find_elements_by_css_selector(css_selector)

 

下面2类不太常用,同样每类也有八种

find_element(by='id',value=None)

find_elements(by='id',value=None)

二、element和elements的区别

1.element方法定位到的是单数,是直接定位到元素,可直接操作

2.elements方法是复数,定位到的是一组元素,返回的是list队列

3.可以用type()函数查看数据类型

4.打印这个返回的内容,看看有什么不一样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# coding:utf-8
from selenium import webdriver
# from selenium.webdriver.common.by import By
import time
driver=webdriver.Chrome()
driver.get("https://www.baidu.com")
a=driver.find_element_by_id("kw")
a.send_keys("a")
time.sleep(2)
 
bb=driver.find_elements_by_id("kw")
bb[0].send_keys("_bb")
time.sleep(2)
 
c=driver.find_element("id","kw")
c.send_keys("_c")
time.sleep(2)
 
dd=driver.find_elements("id","kw")
dd[0].send_keys("_dd")
 
print("a的类型:{},值:{}".format(type(a),a))
print("bb的类型:{},值:{}".format(type(bb),bb))
print("c的类型:{},值:{}".format(type(c),c))
print("dd的类型:{},值:{}".format(type(dd),dd))

 运行结果:

1
2
3
4
a的类型:<class 'selenium.webdriver.remote.webelement.WebElement'>,值:<selenium.webdriver.remote.webelement.WebElement (session="864b09ef2caa45ac7fdf25ac01bfc3cb", element="d2671363-8edd-4ed8-9072-ffd38bee4ae6")>
bb的类型:<class 'list'>,值:[<selenium.webdriver.remote.webelement.WebElement (session="864b09ef2caa45ac7fdf25ac01bfc3cb", element="d2671363-8edd-4ed8-9072-ffd38bee4ae6")>]
c的类型:<class 'selenium.webdriver.remote.webelement.WebElement'>,值:<selenium.webdriver.remote.webelement.WebElement (session="864b09ef2caa45ac7fdf25ac01bfc3cb", element="d2671363-8edd-4ed8-9072-ffd38bee4ae6")>
dd的类型:<class 'list'>,值:[<selenium.webdriver.remote.webelement.WebElement (session="864b09ef2caa45ac7fdf25ac01bfc3cb", element="d2671363-8edd-4ed8-9072-ffd38bee4ae6")>]

 三、elements定位方法

1.这里重点介绍下用elements方法如何定位元素,当一个页面上有很多个属性相同的元素,然后父元素的属性也比较模糊,不太好定位。

这个时候不用怕,换个思维,别老想着一次定位到,可以先把相同属性的元素找出来,取对应的第几个就可以了。

2.如下图,百度页面上有六个class一样的元素,我要定位“地图”这个元素

 

 3.取对应下标即可定位了

1
2
3
4
5
6
7
8
# coding:utf-8
from selenium import webdriver
driver=webdriver.Chrome()
driver.get("https://www.baidu.com")
l=driver.find_elements_by_xpath("//div[@id='head']/div[3]/a")
#地图在第3个位置
print(l[2].text)
l[2].click()  

 运行结果:

1
 

 

posted on   星空6  阅读(673)  评论(0编辑  收藏  举报

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示