Selenium常用操作——driver对象定位元素的方法

说明

1.如果只是想解析网页中的数据,推荐使用lxml。lxml底层使用C语言,解析效率会更高。

2.如果需要对元素进行操作,比如传值或点击按钮,就需要使用selenium提供的查找元素方法。

3.推荐使用xpath和css元素选择器进行定位。

目录

一.通过xpath定位

二.通过元素id定位

三.通过css选择器定位

四.通过元素name定位

五.通过元素class_name定位

六.通过链接文本元素定位

七.通过部分链接文本定位

八.通过标签名定位

九.find_element与find_elements区别

十.示例代码


本文以百度搜索为例演示selenium常用的元素定位方法。

百度搜索框代码

一.通过xpath定位

# 通过xpath定位,并在搜索框中填入Python

inputText = driver.find_element_by_xpath('//*[@id="kw"]').send_keys('Python')

运行效果

二.通过元素id定位

#通过元素id定位

inputText = driver.find_element_by_id('kw').send_keys('Python')

运行结果同上。 

三.通过css选择器定位

# 通过css选择器定位

inputText = driver.find_element_by_css_selector('#kw').send_keys('Python')

运行结果同上。

四.通过元素name定位

# 通过元素name定位

inputText = driver.find_element_by_name('wd').send_keys('Python')

运行结果同上。

五.通过元素class_name定位

# 通过元素class_name定位

inputText = driver.find_element_by_class_name('s_ipt').send_keys('Python')

运行结果同上。

六.通过链接文本元素定位

 

# 通过链接文本元素定位

driver.find_elements_by_link_text('hao123')[0].click()

七.通过部分链接文本定位

# 通过部分链接文本元素定位

driver.find_element_by_partial_link_text('hao').click()

运行结果同上。

八.通过标签名定位

适用情况:目标元素在当前html中是唯一标签或众多定位出的标签中的第一个。

九.find_element与find_elements区别

find_elemnet:定位到是一个对象,定位不到则报错。

find_elemnets:定位到是一个含元素的列表,定位不到是一个空列表。

十.示例代码

""" driver元素定位方法 """

from selenium import webdriver
import time

url = 'https://www.baidu.com'

# 创建浏览器对象
driver = webdriver.Chrome()

# 访问百度
driver.get(url)

# # 通过xpath定位
# inputText = driver.find_element_by_xpath('//*[@id="kw"]').send_keys('Python')
#
# # 通过元素id定位
# inputText = driver.find_element_by_id('kw').send_keys('Python')

# # 通过css选择器定位
# inputText = driver.find_element_by_css_selector('#kw').send_keys('Python')
#
# # 通过元素name定位
# inputText = driver.find_element_by_name('wd').send_keys('Python')

# # 通过元素class_name定位
# inputText = driver.find_element_by_class_name('s_ipt').send_keys('Python')

# # 通过链接文本元素定位
# driver.find_elements_by_link_text('hao123')[0].click()

# 通过部分链接文本元素定位
driver.find_element_by_partial_link_text('hao').click()

time.sleep(2)

 


版权声明:本文为snailzzw原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。