Python3.x:Selenium中的webdriver进行页面元素定位

页面上的元素就像人一样,有各种属性,比如元素名字,元素id,元素属性(class属性,name属性)等等。webdriver就是利用元素的这些属性来进行定位的。

可以用于定位的常用的元素属性:

  • id
  • name
  • class name
  • tag name
  • link text
  • partial link text
  • xpath
  • css selector

对应于webdriver中的定位一个元素方法分别是:

  • driver.find_element_by_name()
  • driver.find_element_by_id()
  • driver.find_element_by_class_name()
  • driver.find_element_by_tag_name()
  • driver.find_element_by_link_text()
  • driver.find_element_by_partial_link_text()
  • driver.find_element_by_xpath()
  • driver.find_element_by_css_selector()

相应的webdriver中的 定位一组元素的方法:

  • driver.find_elements_by_name()
  • driver.find_elements_by_id()
  • driver.find_elements_by_class_name()
  • driver.find_elements_by_tag_name()
  • driver.find_elements_by_link_text()
  • driver.find_elements_by_partial_link_text()
  • driver.find_elements_by_xpath()
  • driver.find_elements_by_css_selector()

使用示例:

  • id 和name 定位

    #id
    driver.find_element_by_id('kw')
    #name
    driver.find_element_by_name('tj_trnews')
  • class name和tag name定位

    driver.find_element_by_class_name("s_ipt")  
  • link text 与partial link text 定位

    #通过linx text定位
    find_element_by_link_text("新闻")
    find_element_by_link_text("贴吧")
    #通过partail link text定位
    find_element_by_link_text("新")
    find_element_by_link_text("贴")
  • XPath 定位(插件XPath Checker,Firefox的附件组件,可以直接右键查看元素的XPath。)

    '''
    XPath是一种文档定位语言。因为HTML可以看做是XML的一种实现,所以selenium用户可使用这种强大的语言在web应用中定位。
    绝对路径方法:
    从根元素写起,当元素层级很深的时候,路径写的会很长,阅读性不好,也很难维护。不建议使绝对路径这样的方法。
    相对路径方法:
    通过Firebug很容易得到相对路径的xpath,打开Firebug插件,在页面上的搜索文本框,就可以显示出xpath了;
    ''' #通过xpath寻找,任意(*代表)id属性为’kw‘的元素
    driver.find_element_by_xpath("//*[@id='kw']").click()
    #通过xpath寻找,任意(*代表)input属性为’kw‘的元素
    driver.find_element_by_xpath("//input[@id='kw']").click() #需要根据上级目录的属性来定位当前元素
    #通过上一级目录的id 属性定位
    find_element_by_xpath("//span[@id=’input-container’]/input")
    #通过上三级目录的id 属性定位
    find_element_by_xpath("//div[@id=’hd’]/form/span/input")
    #通过上三级目录的name 属性定位
    find_element_by_xpath("//div[@name=’q’]/form/span/input")
  • CSS定位

    #这种定位方法是比较难理解
 获取元素后,解析元素的源码、属性值、文本内容:

#返回一个object
data = driver.find_elements_by_tag_name('table')[0]
#返回html源码
dataHtml = data.get_attribute('innerHTML')
#返回ID值
dataId = data.get_attribute('id')
#返回文本内容
dataText = data.text

Python3.x:Selenium中的webdriver进行页面元素定位的更多相关文章

  1. java selenium webdriver实战 页面元素定位

    自动化测试实施过程中,测试程序中常用的页面操作有三个步骤 1.定位网页上的页面元素,并存储到一个变量中 2.对变量中存储的页面元素进行操作,单击,下拉或者输入文字等 3.设定页面元素的操作值,比如,选 ...

  2. [Selenium]中使用css选择器进行元素定位

    参考:http://www.cnblogs.com/webblog/archive/2009/07/07/1518274.html 常见语法 * 通用元素选择器,匹配任何元素 E 标签选择器,匹配所有 ...

  3. selenium 中在 iframe 内的元素定位

    有些时候 元素明明就在 但是通过什么方式定位都提示 定位不到元素 此时就要考虑元素是不是内嵌在iframe 中 对于内嵌在 ifra中的元素定位 首先定位到 iframe 元素 例如 iframe = ...

  4. 在selenium中使用css选择器进行元素定位

    Sizzle Css3还提供一些直接选取form表单元素的伪类 :input: Finds all input elements (includes textareas, selects, and b ...

  5. selenium webdriver(2)---页面对象定位

    webdriver的元素定位很灵活,提供了多种定位方式: Id LinkText PartialLinkText Name TagName Xpath ClassName CssSelector 这些 ...

  6. java selenium webdriver第二讲 页面元素定位

    自动化测试实施过程中,测试程序中常用的页面操作有三个步骤 1.定位网页上的页面元素,并存储到一个变量中 2.对变量中存储的页面元素进行操作,单击,下拉或者输入文字等 3.设定页面元素的操作值,比如,选 ...

  7. Selenium webdriver 学习总结-元素定位

    Selenium webdriver 学习总结-元素定位 webdriver提供了丰富的API,有多种定位策略:id,name,css选择器,xpath等,其中css选择器定位元素效率相比xpath要 ...

  8. Webdriver处理页面元素的方式

    Webdriver执行JavaScript代码的方式 WebDriver driver = new ChromeDriver(); JavascriptExecutor jse = (Javascri ...

  9. 页面元素定位 XPath 简介

    页面元素定位 XPath 简介 本文所说的 Xpath 是用于 Selenium 自动化测试所使用到的,是针对XHTML网页而言的一种页面元素的定位表示法. XPath 背景 XPath即为XML路径 ...

随机推荐

  1. Javascript实现图片的预加载的完整实现

    图片预加载是web开发中一种应用相当广泛的技术,比如我们在做图片翻转显示等特效的时候,为了让图片在转换的时候不出现等待,我们最好是先让图片下载到本地,然后在继续执行后续的操作.今天我们将来实现一个完整 ...

  2. [SharePoint 2010] 如何安裝啟用多國語系支援的SharePoint網站

    SharePoint 2010的多國語系支援與前一版的SharePoint 2007有所不同,SharePoint 2010內允許使用者自行決定使用介面語系的選擇. SharePoint 2010的多 ...

  3. CLR via 笔记4.2 类型转换 is 与 as 区别

    is 和 as 操作符是用来进行强制类型转换的 is : 检查一个对象是否兼容于其他指定的类型,并返回一个Bool值,永远不会抛出异常 object o = new object(); if (o i ...

  4. web容器与web服务器

    apache.nginx 这类是web服务器tomcat.jboss.Kestrel(asp.net core) 这类是web容器而iis.jexus 两者都是 apache.nginx 是不能直接跑 ...

  5. zipline自制data bundles

    Databundle zipline 缺省提供了一些行情的data bundle , 可以通过 zipline bundles 查看 其中 quandl 数据源是从 https://www.quand ...

  6. php面向对象--继承

    继承 extends 关键字来继承类 被继承的类,我们称之为父类 继承后的类,我们称之为子类 子类继承父类非私有的属性和方法 public 在本类,子类,以及类的外部都访问 protected 保护型 ...

  7. 同步机制及windows同步函数的使用

    最近面试的许多公司都询问关于多线程的问题,但是问的深度一般不会很难,仅仅问相关的同步问题以及对应的API函数,下面是windows下几个常用的同步方法,对于应付帮助或者一般的开发都非常有用 目录一 临 ...

  8. 网络爬虫之scrapy框架详解

    twisted介绍 Twisted是用Python实现的基于事件驱动的网络引擎框架,scrapy正是依赖于twisted, 它是基于事件循环的异步非阻塞网络框架,可以实现爬虫的并发. twisted是 ...

  9. python数据分析基础——numpy和matplotlib

    numpy库是python的一个著名的科学计算库,本文是一个quickstart. 引入:计算BMI BMI = 体重(kg)/身高(m)^2假如有如下几组体重和身高数据,让求每组数据的BMI值: w ...

  10. SyntaxError: Missing parentheses in call to 'print'. Did you mean print('XXXXXX')?

    因为Python3中取消了以前Python 2中的语法. 所以Python 3再使用python2的语法格式就会报错 错误信息中提示需要加上括号,字符串可以用单引号或双引号括起来 这样就不会报错了.