美文网首页
Python+Selenium+WebDriverAPI元素定位

Python+Selenium+WebDriverAPI元素定位

作者: gz_tester | 来源:发表于2019-04-16 10:15 被阅读0次

元素定位

webdriver提供了八中元素定位的方法,在Python语言中,对应的方法如下:

1.id定位

find_element_by_id()方法通过id属性定位元素

2. name定位

find_element_by_name()方法通过name属性定位元素

3. class定位

find_element_by_class_name()方法通过class属性定位元素

4. tag定位

htm的本质就是通过tag来定义实现不同的功能,每一个元素本质上也是一个tag。因为一个tag往往用来定义一类功能,所以通过tag识别某个元素的概率很低。例如我们打开任意一个页面,就会发现大量的<div>,<input>,<a>等tag,所以很难通过tag name去区分不同的元素
find_element_by_tag_name()方法通过tag属性定位元素

5. link定位

find_element_by_link_text()方法通过元素标签对之间的文本信息来定位元素

6. partial link 定位

partial link 定位是对link定位的一种补充,有些文本链接会比较长,这个时候我们可以选取文本链接的一部分定位,只要这一部分可以唯一的标识这个链接
<a class="test" name="test" href="#">这是一个很长很长很长的文本链接</a>
find_element_by_partial_link_text("一个很长很长的")方法通过元素标签对之间的部分文本信息来定位元素

7. XPath定位

绝对路径定位

xpath绝对路径定位方法就是在html文本中,一级一级的往下找,如果一个层级下有多个相同的标签名,那么就按上下顺序确定是第几个【从1开始计数】
find_element_by_xpath("/html/body/div/div[2]/div/div/div/form/span[2]/input")
有关计数的路径表达式,以及表达式的结果:

image.png

利用元素属性定位

除了使用绝对路径之外,xpath也可以使用元素的属性值来定位。
例如:
find_element_by_xpath("//input[@id='kw']")
find_element_by_xpath("//*[@class='kw']")
find_element_by_xpath("//input[@name='kw']")
find_element_by_xpath("//*[@type='submit']")

含义解释如下图:


image.png
image.png

层级与属性结合

如果一个元素本身没有可以唯一标识这个元素的属性值,那么我们可以找其上一级元素,如果它的上一级元素有可以唯一标识的属性值,也可以拿来使用。
例如:
find_element_by_xpath("//span@[type='submit']/input")

使用逻辑运算符

如果一个属性不能唯一地区分一个元素,我们还可以使用逻辑运算符连接多个属性来查找元素
例如:
find_element_by_xpath("//span@[type='submit' and @class='su']/input/span[2]")
下面列出了可用在 XPath 表达式中的运算符:

image.png

8. CSS定位

CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明:


image.png
  • 选择器通常是您需要改变样式的 HTML 元素。
  • 每条声明由一个属性和一个值组成。
  • 属性(property)是您希望设置的样式属性(style attribute)。每个属性有一个值。属性和值被冒号分开。
    css选择器的常见语法


    image.png

通过class属性定位

find_element_by_css_selector()方法用于css语言定位元素,点号"."表示通过class属性来定位元素
例如:find_element_by_css_selector('.s_ip')

通过id属性定位

井号"#"表示通过id属性来定位元素
例如:find_element_by_css_selector('#kw')

标签名定位-通过父子关系定位

例如:find_element_by_css_selector('span>input')
上面的写法表示有父亲元素,它的标签名为span,查找它的所有子元素标签名=input的元素

标签名定位-通过属性定位

例如:find_element_by_css_selector('[name="kw"]')
在css中也可以使用元素的任意属性,只要这些属性可以唯一标识这个元素。对于属性值来说,可以加引号,也可以不加。

标签名定位-组合定位

我们可以把上面的定位策略组合起来使用,这就大大加强了定位元素的唯一性
例如:find_element_by_css_selector('form.fm>span>input#kw')

该篇文章转自虫师的《Selenium2 自动化测试实践 基于Python语言》中的第四章第一部分。

相关文章

  • Python+Selenium+WebDriverAPI元素定位

    元素定位 webdriver提供了八中元素定位的方法,在Python语言中,对应的方法如下: 1.id定位 fin...

  • CSS定位

    定位 相对定位 元素框会偏移。 元素保持原状 元素还占原位CSS 相对定位.png 绝对定位 元素框会偏移 元素保...

  • 总结css垂直居中的几种方式,实用

    1.很实用,父元素相对定位,子元素绝对定位 2.父元素相对定位,子元素绝对定位,利用margin。 /*设定水平和...

  • 子元素相对于父元素的绝对定位

    1、参照定位的元素必须是相对定位元素的父元素 2、参照定位的元素必须加入position:relative; 3、...

  • xpath 一些函数的运用

    1,normalize-space(@元素属性)= “定位元素” (去除元素的空格) 2,count (定位元素)...

  • appium元素定位

    appium提供了许多元素定位的方法,如id定位、name定位、class定位、层级定位等。 元素定位方式 id...

  • 定位09-11

    定位 通过position属性来设置元素的定位-可选值: 相对定位: 绝对定位: 固定定位: eg: 元素的层级 ...

  • Day06

    今天学到了什么? 一、定位 1.相对定位(父元素) 2.绝对定位(子元素) 3.固定定位 固定定位效果图 二、元素...

  • 简单介绍CSS定位position属性

    定位 position 属性规定元素的定位类型说明这个属性定义建立元素布局所用的定位机制。任何元素都可以定位,不过...

  • CSS z-index

    当对多个元素同时设置定位时,定位元素可能会发生重叠。想要调整重叠定位元素的堆叠顺序,可以对定位元素应用z-inde...

网友评论

      本文标题:Python+Selenium+WebDriverAPI元素定位

      本文链接:https://www.haomeiwen.com/subject/eqlpwqtx.html