一 python+selenium 环境搭建
需安装工具:
python 环境搭建 (勾选add to path 省去配置环境变量)
Chrome 浏览器 webdriver驱动 selenium自动化库
安装包:
chrome:官网下载
selenium 安装:pip install selenium
webdriver:https://chromedriver.storage.googleapis.com/index.html
注意:webdriver 与 chrome 浏览器版本需对应
安装过程问题
- 问题描述:webdriver驱动启动路径错误
- 问题描述:webdriver方法大小写
webderiver.Chrome应该大写
选择元素的基本方法
根据元素的id属性选择元素 返回的值为该元素的WebElement对象
调用方法:find_element_by_id
根据class属性,tag名选择元素
根据class属性
所有植物都有class属性 plant
所有动物都有class属性 animal
如果要选择所有的动物,可以使用方法 find_elements_by_class_name
注:返回元素为列表,elements去掉s表示查找第一个
find_element 与 find_elements的区别
find_element 选择的是符合要求的第一个元素,如果没有符合条件的元素,抛异常
elements查找的是符合要求的所有元素,如果没有符合条件的元素,返回空列表
根据tag查找元素
不仅 WebDriver对象有 选择元素 的方法, WebElement对象 也有选择元素的方法。
WebElement对象 也可以调用 find_elements_by_xxx, find_element_by_xxx 之类的方法
WebDriver 对象 选择元素的范围是 整个 web页面, 而
WebElement 对象 选择元素的范围是 该元素的内部。
先定位到元素内部,再查询该元素内部的标签名 ----查询某个属性下特定的标签
标签名重名时,可以根据先定位到class 再定位到具体标签
示例:
CSS表达式 css selector
代码示例:
通过css定位单个元素的方法,多个 elements
find_element_by_css_selector(元素)
属性:
id 是#号
class .表示值
标签
dev tag
选择 子元素 和 后代元素
css 语法:ps. 后代元素与直接子元素可以混用
如果元素2是元素1的直接子元素,css选择子元素语法:
元素1 > 元素2
注意:最终选择的是元素2,且元素2是元素1的直接子元素
也支持更多层的选择
比如 元素1 > 元素2 > 元素3 > 元素4
如果元素2是元素1的后代,css选择后代元素语法:
元素1 元素2 ----中间为空格
注意:最终选择的是元素2,且元素2是元素1的后代元素
也支持更多层的选择 —最终选择的是元素4
比如 元素1 元素2 元素3 元素4
例1:查找id为container下的 直接子元素是div
#container > div
错误示范:#layer1 > span
span 为layer1的孙子节点 应该为 #layer1 span
例2: 查找plant下的span元素
.plant span
#############################分割线#############################
href元素定位方法 —属性定位元素方法
单双引号问题:外面双引号,里面单引号,外面单引号,里边双引号
find_element_by_css_selector(’[href = ‘链接地址’]’)
网页中仅存在一个href元素时
find_element_by_css_selector(’[href = ‘链接地址’]’)
网页中仅存在一个href元素时
find_element_by_css_selector(’[href]’)
#############################分割线#############################
属性标签混合使用, 子元素,后代元素混合使用
属性:
id 是#号
class .表示值
标签
dev tag
混用:
.plant[name=‘duanxuemin’] 表示class为plant,name为duanxuemin
总结:根据属性值定位元素
[属性名=‘属性值’]
属性仅存在一个时
[属性名]
无层级关系 表示且的关系:
查找出id时searchtext,type为text
操控元素的基本方法
点击元素
再元素中输入字符串,通常是对输入框这样的元素
获取元素所包含的信息,比如元素的内容,元素的属性