浏览器对象.window_handles - 获取当前浏览器中所有的窗口对象,返回一个列表;
浏览器对象.switch_to.window(窗口对象) - 切换选项卡
# 切换到最后一个选项卡 b.switch_to.window(b.window_handles[-1]) # 切换到第一个选项卡 b.switch_to.window(b.window_handles[0])xpath解析
python基于和xpath做数据解析需要使用的库是lxml。
1.lxml第三方库
1)作用:lxml可以解析xml内容也可以解析html内容。
2)xpath相关术语
树 - 这个网页或者xml文件对应的结构;
节点 - 标签、元素
根节点 - 最外层的标签
绝对路径 - 从根节点开始写的路径
相对路径 - 用.表示当前节点,用…表示父节点
节点内容 - 双标签的标签内容
属性 - 标签属性
2.xml数据结构
xml数据和json数据一样,是一种通用的数据格式。
3.xpath语法 - 获取标签
1)创建数并且获取根节点
etree.XML(xml数据)
创建xml树结构并且返回根节点;
etree.HTML(html数据)
创建html树结构并且返回根节点。
2)通过路径获取标签
节点对象.xpath(路径)
返回值是列表,列表中的元素是通过指定路径找到的所有标签对应的节点对象。
a.绝对路径:/绝对路径,绝对路径一定是从根节点开始往下写,和xpath前面是哪个节点无关;
b.相对路径:用 . 表示当前节点,xpath前面是哪个节点,当前节点就是谁;用 .. 表示当前节点的父节点;
c.任意路径://路径
3)获取标签内容
获取标签的路径/text()
在路径后面加/text()
4)获取标签属性值
获取标签的路径/@属性名
在路径后面加/@属性名
5)谓语 - 条件
a.位置相关条件
标签名[N] - 第N个指定标签;
标签名[last()] - 最后一个指定标签;
标签名[last()-N] - 倒数第(N+1)个指定标签;
标签名[postion() 标签名[postion()>N] - 获取所有位置值(从1开始)大于N的标签; 标签名[postion()<=N] - 获取所有位置值(从1开始)小于等于N的标签; 标签名[postion()>=N] - 获取所有位置值(从1开始)大于等于N的标签; b.和属性相关的条件 标签名[@属性名] - 获取拥有指定属性的指定标签 标签名[@属性名] - 获取指定属性为指定值的指定标签 c.和标签内容相关的条件 用子标签的标签内容对父标签进行筛选,通过标签中子标签的内容来对标签进行筛选 标签对象[子标签名>数据] 标签对象[子标签名<数据] 标签对象[子标签名>=数据] 标签对象[子标签名<=数据] 标签对象[子标签名=数据] 6)通配符 * 用*代替任何标签或者任何属性



