目录
通过tag_name来定位元素标签不止一个,因此常和 find_elements 一起使用find_elements 返回的是一个列表,列表内是所有满足条件的元素
1.什么是元素定位
元素定位就是查找HTML 元素的过程.
HTML 元素指的是从开始标签(start tag)到结束标签(end tag)的所有代码。
操作页面元素之前,首先要对元素进行定位,所以定位是自动化脚本编写的开始。
通常使用find_element或find_elements方法来定位元素。
1、find_element使用给定的方法定位和查找一个元素
2、find_elements使用给定的方法定位和查找所有元素list
3、先在python写入以下代码
# 1.导入selenium里面的webdriver
from selenium import webdriver
# 2.实例化了一个浏览器对象
driver = webdriver.Chrome()
# 3.通过对象里面的get方法打开百度网页
driver.get('http://www.baidu.com')
2.元素定位的基础方法
1.根据id定位
# 通过id定位到百度搜索框
ele = driver.find_element_by_id('kw')
2.根据name定位
# 根据name定位
# driver.find_element_by_name('wd')
3.根据class定位
# 根据class定位
# driver.find_element_by_class_name('s_ipt')
4.根据tag_name来定位
通过tag_name来定位元素标签不止一个,因此常和 find_elements 一起使用find_elements 返回的是一个列表,列表内是所有满足条件的元素
# 根据tag_name来定位
driver.find_elements_by_tag_name('a')
5.根据超链接的文字进行定位,只能定位链接文本
# 根据超链接的文字进行定位,只能定位链接文本
driver.find_element_by_link_text('新闻')
6.通过超链接的部分文本信息进行定位
# 通过超链接的部分文本信息进行定位
driver.find_element_by_partial_link_text("新")
3.Xpath元素定位方式
XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历。HTML是标准的XML,所以HTML也可以使用XPath
/:表示从根目录开始 //:表示从相对路径开始 @:表示选取属性
1.根据标签+属性定位
# 标签+属性进行xpath定位
# 定位百度首页的输入框标签
driver.find_element_by_xpath('//input[@autocomplete="off"]')
2.根据层级定位
# 层级定位
driver.find_element_by_xpath('//form[@action="/s"]/input')
3.根据索引定位
# 索引定位
# 定位百度的input标签
driver.find_element_by_xpath('//form[@action="/s"]/input[2]')
4.模糊匹配
# 模糊匹配
# 定位百度首页的logo标签
driver.find_element_by_xpath('//a[contains(@id,"result_")]')
5.多条件查找
# 多条件查找
# 定位百度的input标签
driver.find_element_by_xpath('//input[@type="hidden" and @name="rn"]')
4.css元素定位方式
CSS(Cascading Style Sheets)是一种语言,它被用来描述HTML 和XML 文档的表现。CSS 使用选择器来为页面元素绑定css属性。Selenium官网的Document里极力推荐使用CSS locator,而不是XPath来定位元素,原因是CSS locator比XPath locator速度快,特别是在IE下比XPath更高效更准确更易编写,对各种浏览器支持也很好。
先在python写入以下代码
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
1.根据标签+属性定位
# 根据标签+属性定位
driver.find_element_by_css_selector('input[id="kw"]')
2.根据id定位
# 根据id定位
driver.find_element_by_css_selector('#kw')
3.根据class定位
# 根据class定位
driver.find_element_by_css_selector('.s_ipt')
4.模糊匹配
# 模糊匹配
driver.find_element_by_css_selector('input[autocomplete*="of"]')
5.多条件匹配
# 多条件匹配
driver.find_element_by_css_selector('input[type="hidden"][name="f"]')