一、selenium驱动下载
- 火狐:https://github.com/mozilla/geckodriver/releases/
- 谷歌:http://chromedriver.storage.googleapis.com/index.html
# 导包
from selenium import webdriver
from time import sleep
# 获取浏览器驱动
driver = webdriver.Chrome()
# 打开url
driver.get("http://www.baidu.com")
# 暂停3秒
sleep(3)
# 关闭浏览器驱动
driver.quit()
二、元素八大定位
- id
driver.find_element_by_id(id)
- name
driver.find_element_by_name(name)
- class_name(使用元素的class属性定位)
driver.find_element_by_class_name(class_name)
- teg_name(标签名称 <标签名 …/>)
driver.find_element_by_tag_name(tag_name)
# tag_name在html中是标签的名字,在一个页面上会有很多个标签的名字相同。这种定位方法适用于需要定位一组元素时。
- link_text(定位超连接 a标签)
driver.find_element_by_link_text(link_text)
#精准定位
- partial_link_text(定位超链接 a标签 模糊)
driver.find_element_by_partial_link_text(partial_link_text)
#精准或模糊定位,默认返回第一个值
- xpath(基于元素路径)
driver.find_element_by_xpath(xpath)
- css_selector(元素选择器)
driver.find_element_by_css_selector(css)
汇总:
1. 基于元素属性特有定位方式(id\name\class_name)
2. 基于元素标签名称定位:tag_name
3. 定位超链接文本(link_text、partial_link_text)
4. 基于元素路径定位(xpath)
5. 基于选择器(css_selector)
三、定位一组元素
方法:
driver.find_elements_by_xxx()
xxx为以下八种定位:id、name、class_name、tag_name、link_text、partial_link_text、xpath、css_selector
返回结果:
类型为列表,要对列表进行访问和操作必须指定下标或进行遍历,[下标从0开始]
四、八种元素定位的底层实现
导包: from selenium.webdriver.common.by import By
方式:
driver.find_element(By.xxx, ‘value’)
参数说明:
By.xxx :为By类的类型 ,为以上介绍过的八种定位,如By.ID、By.NAME、By.CLASS_NAME、By.TAG_NAME、By.CSS_SELECTOR、By.XPATH等
value: 元素的定位值