一、常见元素类型:
input 输入域 type
button
select
ul列表
a 超链接
image图片
table表格
form表达单
dicv块元素 ,页面布局
文本 p段落 span短文本 同行
二、元素定位
原则:哪个变得少用哪个元素定位方法,越简单越好,方便后期好维护脚本(比如:有个元素套了好几层,点哪个效果都是一样的,那就用最外层的)
xpath:
a. /表示路径
根节点/bookstore/book/title
b.//递归路径
c.[]谓语 表示xx条件
/bookstore/book[1] ---- 数字---索引
/bookstore/book[@cover] --- 属性前加@
/bookstore/book[@category='web']
/bookstore/book[@category='web' and @cover] ----谓语里面可加and or not
/bookstore/book[not@category='web']
//title[text()='Learning XML'] -----text()要加括号
/bookstore/book/title[text()='Learning XML']/../ -----回到上层
/bookstore/book/[title='Learning XML']
//book//*/text() -----选取book下所有后代节点的text值,用到了通配符*
//book[count(author)=1 and @category='web']/year --选取 单个作者 且 分类是web的书的出版年份值
//book[count(author)=1 and price >30]/@category ---选取 单个作者 且 定价大于30的书的分类签
//book[count(author)>1 and contains(title, 'X')]/price ----选取 多个作者 且 标题是以X开头的 书的定价
//book[@category='web' and not(contains(author, 'James'))]/title----选取 分类是web 且作者不包括James的所有书的标题
//book[count(author)>1 and stars-with(title,'X')]/price -----选取多个作者 且标题是以x开头的书的定价
可以加函数: count、contains、stars-with等
总结:
查询对象,层层找
一个元素是一个单独的个体,它有属性,有内容值
contains(属性名或节点名,文本值)
定位:
操作中定位:
li =driver.find_elements_by(xpath,"//ul[@class='tab-head clearfix']/li")
for l in li:
li.click()
time.sleep(1)
prices = driver.find_elements_by(xpath,'//div[@class="tab-body"]//dl[contains@style,'display:block']')
for p in prices:
print(p.text)
注意:切换页面后查看元素时,检查下style属性是不是'display:none',如果有则选择block值才可取到值
翻页: 思路:找下一个元素是否可被点击,如果不能点击则到了最后一页