1. 什么是框架?
框架(framework)是一个框子——指其约束性,也是一个架子——指其支撑性。是一个基本概念上的结构,用于去解决或者处理复杂的问题。
框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。
框架,其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。
2. 为什么使用框架?
- 自己从头实现太复杂
- 使用框架能够更专注于业务逻辑,加快开发速度
- 框架的使用能够处理更多细节问题
- 使用人数多,稳定性,扩展性好
3. Selenium概述
- Selenium工作原理、webdriver工作原理。
4. 环境搭建
- python3.7
- selenium 安装:pip install selenium
- 浏览器驱动
谷歌:下载谷歌配套webdriver
火狐:下载火狐配套geckodriver
Edge:下载Edge配套webdriver
Safari:下载Safari配套webdriver
5. 基本命令
- 库的导入
from selenium import webdriver # 导包
- 创建浏览器对象
driver = webdriver.Chrome("webdriver路径")
- 页面请求操作
driver.get(url) # 请求某个url对应的响应
refresh() # 刷新页面操作
back() # 回退到之前的页面
forward() # 前进到之后的页面
- 浏览器相关操作
dirver.maximize_window() 最大化
dirver.minimize_window() 最小化
get_window_size() 获取浏览器尺寸
set_window_size() 设置浏览器尺寸
get_window_position() 获取浏览器位置
set_window_position(x,y) 设置浏览器位置大小
# 注:显示器以左上角为(0,0),所有的位置操作都是相对于显示器左上角展开的位移操作,单位是像素。
close() 关闭当前标签/窗口
quit() 关闭所有标签/窗口
- 八大元素定位
id定位:find_element_by_id() # id定位
name定位:find_element_by_name() # name属性值定位
class定位:find_element_by_class_name() # 伪类名定位
link定位:find_element_by_link_text() # 标签名定位
partial link定位:find_element_by_partial_link_text() # 链接文本定位
tag定位:find_element_by_tag_name() # 部分链接文本
xpath定位:find_element_by_xpath() # xpath路径表达式
css定位:find_element_by_css_selector() # css选择定位
- 点击和输入
click() # 点击操作
clear() # 清空文本
send_keys() # 输入文本
5. 八大元素定位Demo练习
- id定位
ss = driver.find_element_by_id("kw") # 匹配id为kw的标签
ss.send_keys("富兰克林自传")
- xpath定位
ss = driver.find_element_by_xpath("//*[@id='kw']")
ss.send_keys("富兰克林自传")
- css定位
ss = driver.find_element_by_css_selector("#kw") # 查找id为kw的所有元素
ss.send_keys("富兰克林自传")
- name定位
ss = driver.find_element_by_name("wd")
ss.send_keys("富兰克林自传")
- 链接文本定位
ss = driver.find_element_by_link_text("hao123")
ss.click()
- 部分链接文本定位
ss = driver.find_element_by_partial_link_text("hao")
ss.click()
- class属性定位
ss = driver.find_element_by_class_name("s_ipt")
ss.send_keys("富兰克林自传")
- 标签属性定位
ss = driver.find_element_by_tag_name() # 写入网站标签即可获取,默认获取第一个标签
ss.click()