Selenium之元素定位-xpath
发布时间:2019-12-27 19:44:36 所属栏目:资源 来源:博客园
导读:被 测试 网页的HTML代码 使用上面的代码生成被测试网页,基于此网页来实现各种不同的页面元素的xpath定位方法 ①xpath绝对路径定位元素 绝对路径表示页面元素在被测网页的HTML代码结构中,从根节点一层层地搜索到需要被定位的页面元素,绝对路径起始于正斜
被测试网页的HTML代码 使用上面的代码生成被测试网页,基于此网页来实现各种不同的页面元素的xpath定位方法 ①xpath绝对路径定位元素 绝对路径表示页面元素在被测网页的HTML代码结构中,从根节点一层层地搜索到需要被定位的页面元素,绝对路径起始于正斜杠(/),每一步均被斜杠分割。 目的 在被测网页中查找第一个div标签下的“查询”按钮 xpath定位表达式: python定位语句: 代码解释 上述xpath定位表达式从html dom树的根节点(html节点)开始逐层查找,最后定位到“查询”按钮节点。路径表达式“/”表示跟节点。 使用绝对路径定位页面元素的好处在于可以验证页面是否发生变化。如果页面结构发生变化,可以会造成原先有效的xpath表达式失败。使用绝对历经定位是十分脆弱的,因为即便页面代码结构只发生了微小的变化,也可能会造成原先有效的xpath定位表达式定位失败。因此,建议在自动化测试的定位实施环节中,优先考录使用后面将要介绍的相对路径进行定位。 ②xpath相对路径定位元素 相对路径的每一步都根据当前节点集之中的节点来进行计算,起始于双//。 目的 在被测试网页中,查找第一个div标签下的“查询”按钮。 xpath定位表达式: python定位语句: 代码解释 上述xpath定位表达式中//表示从匹配选择的当前节点开始选择文档中的节点,而不考虑特面的位置。input[@value="查询"]表示定位value值为“查询”两个字的input页面元素。 相对路径的xpath定位表达式更加简洁,不管页面发生了何种变化,只要input标签的value属性值没变,始终都可以定位到。推荐使用相对路径的xpath表达式,并且越简洁越好,可大大降低测试脚本中定位表达式的维护成本。 ③xpath使用索引号定位元素 索引号表示某个被定位的页面元素在其父元素节点下的同名元素中的位置符号,需要从1开始。 目的 在被测网页中,查找第一个div标签下的“查询”按钮 xpath定位表达式: python定位语句: 代码解释 索引号定位方式是根据该页面元素在页面中相同标签名之间出现的索引位置来进行定位。上述xpath定位表达式表示查找页面中第二个出现的input元素,即被测试页面上的“查询”按钮。 若在Firefox浏览器的插件(try xpath,新版本的firepath已经没有了!真的挺伤心的)中使用上述的定位方式你会发现定位到两个元素,两个div标签下的input都被定位到了,这和只查找第一个input元素相冲突,这是由于被测网页中两个div标签都包含了input标签,xpath再查找的时候把每个div节点都当作相同的起始层级开始查找,所以用//input[1]表达式会同时查找到两个div节点下的第一个input元素。如果再两div标签下还有嵌套的div,并且嵌套的div下也有input标签,也会被定位到。因此在使用索引号定位页面元素的时候,需要注意网页html代码中是否包含了多个层级完全相同的代码结构,若出现了这种情况,就需要修改定位表达式,以确保自动化测试脚本中使用的定位表达式能唯一定位所需要的元素。如果想同时定位多个相同的input页面元素可以使用下面的python语句: elementList=driver.find_elements_by_xpath("//input[1]") 将定位的多个元素存储到list中,然后根据list索引号获取想要的页面元素。但如果发现页面元素会经常增加或减少,就不建议使用索引号定位方式。 基于实例中的被测网页,下面给出更多的通过索引号定位的实例![]() ![]() ![]() ![]() ![]() (编辑:91站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |