一、环境
1、selenium
安装:pip install selenium==版本号(==后可省略,默认安装最新版本)
查看:pip show selenium
卸载:pip uninstall selenium
2、浏览器驱动
以chrome为例:
驱动下载地址(需墙):https://sites.google.com/a/chromium.org/chromedriver/home
http://chromedriver.storage.googleapis.com/index.html(国内可访问)
Windows:解压后将驱动移动至chrome安装目录下和python安装目录下
Mac:解压后直接移动至/usr/local/bin目录下
修改权限:sudo chmod u+x,o+x /usr/local/bin/chromedriver
检查是否成功:chromedriver --version
3、测试代码
成功打开chrome跳转至百度并关闭浏览器则表示环境安装成功
import time
from selenium import webdriver
# 创建浏览器驱动
driver = webdriver.Chrome()
# 打开web页面
driver.get(r"https://www.baidu.com")
time.sleep(1)
# 关闭驱动
driver.quit()
二、元素定位(chrome可通过F12定位,Firefox可通过firebug定位)
1、id(通过元素的id属性定位,id一般情况下在当前页面中是唯一)
例:driver.find_element_by_id(id)
2、name(通过元素的name属性定位)
例:drivr.find_element_by_name(name)
3、class_name(通过元素的class属性定位)
例:driver.find_element_by_class_name(class)
4、tag_name(通过元素的标签名称定位)
例:driver.find_element_by_tag_name("标签名")
注:如果页面中存在多个相同标签,默认返回第一个标签元素。
5、link_text(定位超链接标签)
例:driver.find_element_by_link_text("超链接中的全部文本")
注:link_text定位元素的内容必须为全部匹配
6、partial_link_text(定位超链接标签)
例:driver.find_element_by_partial_link_text("超链接中的部分文字或者全部文字")
注:可以使用精准或模糊匹配,如果有多个值,默认返回第一个值
7、xpath(基于元素路径定位)
driver.find_element_by_xpath()
绝对路径:以单斜杠开头逐级开始编写,不能跳级。如:/html/body/div/p1/input
相对路径:以双斜杠开头,双斜杠后边跟元素名称,不知元素名称可以使用*代替。如://input或者//*
路径结合属性:在Xpath中,所有的属性必须使用@符号修饰.如://*[@id='id值']
路径结合逻辑://*[@id="id值" and @属性='属性值']
路径结合层级://*[@id='父级id属性值']/input
定位文本值等于XXX的元素://*[text()='XXX']
定位属性包含xxx的元素://*[contains(@属性,'xxx')]
定位属性以xxx开头的元素://*[starts-with(@属性,'xxx')]
8、css定位(通过css选择器工具进行定位)
driver.find_element_by_css_selector()
id选择器 #id
class选择器 .class
元素选择器 element 如:input
属性选择器 [属性名=属性值]
层级选择器 p>input 或者 p input 注:>与空格的区别,大于号必须为子元素,空格则不用
9、定位一组元素
driver.find_elements_by_xxx()
注:返回类型为列表
10、元素定位方法底层都是通过driver.find_element(By.xxx, 'value')实现
注:使用By类必须导包from selenium.webdriver.common.by import By