selenium 查找页面元素方法
1、 Selenium by查找元素
特别强调一下:Byxpath()
绝对路径以单/号表示,而下面要讲的相对路径则以//表示,这个区别非常重要。另外需要多说一句的是,当xpath的路径以/开头时,表示让Xpath解析引擎从文档的根节点开始解析。当xpath路径以//开头时,则表示让xpath引擎从文档的任意符合的元素节点开始进行解析。
查找页面上id为loginForm的form元素:
查找页面上具有name属性为username的input元素:
2、 注解获取页面元素
方式有3种:@FindBy、@FindBys、@FindAll。
下文对3中类型的区别和使用场景进行介绍
1)@FindBy
2)@FindBys
@FindBys 相当于是取交集,是先根据第一个注解获取到对应元素,然后根据第二个注解再帅选出对应的页面元素,。如先找到符合classname=A的元素,再在这些元素集中找到id=B的所有元素
就像如下 *** 作:
3)@FindAll
@FindAll相当于是取并集,如找到id=A和id=B的所有元素
XPath 简介
XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。
什么是 XPath
XPath 使用路径表达式在 XML 文档中进行导航
XPath 包含一个标准函数库
XPath 是 XSLT 中的主要元素
XPath 是一个 W3C 标准
XPath 路径表达式
XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似
XPath 标准函数
XPath 含有超过 100 个内建的函数。这些函数用于字符串值、数值,日期和时间比较、节点和 QName 处理、序列处理、逻辑值等等。
XPath 在 XSLT 中使用
XPath 是 XSLT 标准中的主要元素。如果没有 XPath 方面的知识,您就无法创建 XSLT 文档。
XQuery 和 XPointer 均构建于 XPath 表达式之上。XQuery 10 和 XPath 20 共享相同的数据模型,并支持相同的函数和运算符。
您可以在我们的《XQuery 教程》中阅读更多有关 XQuery 的知识。
XPath 是 W3C 标准
XPath 于 1999年11月16日 成为 W3C 标准。
XPath 被设计供 XSLT、XPointer 以及其他 XML 解析软件使用。
XPath 节点
在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档节点(或成为根节点)。
XPath 术语
节点(Node)
在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。
1查看元素是否找到,如果有返回一个列表:$x('xpath路径")][text()="项目总数"]')
2实现点击:$x('xpath路径")][text()="项目总数"]')[0]click()
到目前为止我一直用的xpath方式爬取页面数据。
我所采取的方法是直接利用xpath爬取其中一条,判断是否能采取这种方法。
目前遇到的坑有,总结一下
解决方法是,从新分析xpath路径。绕过这个根节点,从下一级找一个新的根节点
在爬取多个页面的时候我们需要从URL中找到规律,再利用遍历达到多个页面爬取的目的。例如
之前我们在学习GET传递参数的时候,知道URl+?+参数1&参数2+&参数n传递参数。这里我们通过对比两页的URL,把多余的传参删除,留下非常简练的链接,当然必须包括keyword,和分页如file= 1等
对上面的URL简化
keyword:PHP,分页curPage = 1,对分页keyword,进行遍历拼接。达到了多页爬取的目的
由于网页结构问题,网页中回家如&ndsp的空格字符,你爬取的数据会左右开弓,非常凌乱。整体美观受到影响。解决方法是strip()函数"itemnamestrip()"
当时是爬取51job,取到的前三个字段为空,在插入excel时会出现三个空字段,分析发现是div标签,第一个字段是div[4]。当时想的办法是从divp[4]开始取值。失败,最后解决方法是还是利用strip函数判断字段是否为空,不为空取出数据插入list。
从开始接触,我们习惯了默认的UTF-8编码。在突然遇到不同的编码方式如'gbk',你爬取的字段就是一堆乱码
这个是我,一直跑火车,跑习惯了。红灯乱闯。
我没有加headers,也就是当前网页的绿灯。这个是真的没有想到,之前一直是以为headers 是模仿浏览器才去用。所以往往第一步就把我挡在了外面。
所以在爬取不管哪个网站你最好是加上headers,遵守交通规则。才能爬到你想要的数据
吃亏是福啊,在python的路上多吃点亏没错
以上就是关于selenium 获取元素方法-注解全部的内容,包括:selenium 获取元素方法-注解、到底XPath是什么、软件测试中实现web自动化如何使用xpath定位元素等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)