前奏
脚本运行流程
1.引包:from selenium import webdriver
2.创建对象:driver = webdriver.Chrome()
3.操作定位元素:driver.find_element…..
4.关闭对象:driver.quit()
基本定位方法
id定位
Webdriver中对应的方法:find_element_by_id(value)
name定位
Webdriver中对应的方法:find_element_by_name(NAME值)
class name定位
Webdriver中对应的方法:find_element_by_class_name(class值)
tag name定位
Webdriver中对应的方法:find_elements_by_tag_name(tag值)
link text定位
Webdriver中对应的方法:find_element_by_link_text(linktext) 注:匹配链接标签中的文本内容
partial link text定位
Webdriver中对应的方法:find_element_by_partial_link_text(linktext) 注:定位页面链接只需要模糊匹配即可
定位后操作:
send_keys():输入
clear():清空
click():点击
Find_elements_by*方法通常用来统计页面元素个数
Xpath定位
语法格式
//div[@id="value"] 注://标签[@属性=“属性值”]
节点间的关系
父节点(Parent)
每个元素以及属性都有一个父节点。
子节点(Children)
一个元素节点可有零个、一个或多个子节点。
同胞节点(Sibling)
表示拥有相同父节点的节点。
先辈节点(Ancestor)
表示某节点的父节点,父节点的父节点,以及父节点的所有祖先节点。
后代节点(Descendant)
表示某个节点的子节点,子节点的子节点,以及子节点的所有后代节点。
Xpath定位语法—绝对路径
表达式:/html/body/div/input[@value=“查询”]
Xpath定位语法—相对路径
表达式://input[@value=“查询”]
Xpath定位语法—索引号
表达式://input[2] 注:第二个input
定位第二个div下的超链接
表达式://div[last()]/a
定位第一个div中的超链接
表达式://div[last()-1]/a
定位最前面一个属于div元素的子元素中的input元素
表达式://div/input[position()<2]
Xpath定位语法—属性值
//img[@alt=“div1-img1”] 注:定位img元素
//img[@href=‘http://www.sogou.com’] 注:定位页面一张图片
//div[@id=‘div2’]/input[@name=‘div2input’] 注:定位id属性为div2的div中name属性为div2input的input输入框
//div[@id=‘div1’]/a[@href=‘http://www.sogou.com’] 注:定位第一个div中的href=‘http://www.sogou.com’链接
//input[@type=‘button’] 注:定位页面的查询按钮
Xpath定位语法—模糊属性值
starts-with(str1,str2) 注:查找属性alt的属性值以”div1”关键字开始的页面元素 //img[starts-with(@alt,’div1’)]
contains(str1,str2) 注:查找alt属性的属性值包含”img”关键字的页面元素。 //img[contains(@alt,’img’)]
Xpath定位语法—Xpath轴(Axes)
parent:选择当前节点的上层父节点 //img[@alt=‘div2-img2’]/parent::div
child:选择当前节点的下层所有子节点 //div[@id=‘div1’]/child::img
ancestor:选择当前节点所有上层的节点 //img[@alt=‘div2-img2’]/ancestor::div
descendant:选择当前节点所有下层的节点(子、孙) //div[@name=‘div2’]/descendant::img
following:选择当前节点之后显示的所有节点 //div[@id=‘div1’]/following::img
following-sibling:选择当前节点后续所有兄弟节点 //a[@href=‘http://www.sogou.com’]/following-sibling::input
preceding:选择当前节点前面的所有节点 //img[@alt=‘div2-img2’]/preceding::div
Preceding-sibling:选择当前节点前面的所有亲兄弟节点 //input[@value=‘查询’]/preceding-sibling::a[1]
Xpath定位语法—页面元素的文本
通过text()函数可以定位到元素文本包含某些关键内容的页面元素
Xpath表达式
//a[text()=“搜狗搜索”]
//a[.=“搜狗搜索”]
//a[contains(.,”百度”)]
//a[contains(text(),”百度”)]
//a[contains(text(),”百度”)]/preceding::div
//a[contains(百度”)]/..
CSS定位
语法格式
div[id="value"] 注:标签[属性=“属性值”]
参考:https://www.w3school.com.cn/cssref/css_selectors.ASP