webdriver提供了丰富的API,有多种定位策略:id,name,css选择器,xpath等,其中css选择器定位元素效率相比xpath要高些,使用id,name属性定位元素是最可靠,效率最高的一种办法。

  1、元素定位的方法:find_element() 与find_elements()

    find_element() 该方法返回基于指定查询条件的webElement对象,或抛出不符合条件的异常  eg:element = driver.find_element(By.ID,'u1')

    findElements() 该方法返回指定查询条件的WebElement的对象集合,或抛出不符合条件的异常
 
  2、WebElement对象提供的各种定位元素策略
 

    ID:driver.findElement(By.ID,'elementID')    

    Name:driver.findElement(By.NAME,'elementName')

    className:driver.findElement(By.CLASS_NAME,'elementClassName')        

    tagName:driver.findElement(By.TAG_NAME,'htmlTagName')

     linkText:driver.findElement(By.LINK_TEXT,'linkText')

    partialLinkText:driver.findElement(By.PARTIAL_LINK_TEXT,'partialLinkText')

    css:driver.findElement(By.CSS_SELECTOR,'cssSelector')

    xpath:driver.findElement(By.XPATH,'xpathQuery') 

 

    例如:url ='https://www.baidu.com/'

    driver.find_element(By.ID,'u1')

     driver.find_element(By.NAME,'tj_trnews')

     driver.find_elements(By.CLASS_NAME,'mnav')

     driver.find_element(By.ID,'u1').find_elements(By.TAG_NAME,'a')

     driver.find_element(By.ID,'u1').find_element(By.LINK_TEXT,'新闻')

     driver.find_element(By.ID,'u1').find_element(By.PARTIAL_LINK_TEXT,'闻')

     driver.find_elements(By.CSS_SELECTOR,"a[name^='tj']") #匹配属性值name以tj开头的元素

    driver.find_elements_by_xpath("//div[@id='u1']/a")

  

  3、使用元素的任何属性来定位元素

    driver.find_element(By.CSS_SELECTOR("标签名[属性名='属性值']"))

    

    1、^=        driver.find_element(By.CSS_SELECTOR("标签名[属性名^='xxx']"))  匹配属性值以xxx开头的元素

          例如:driver.find_elements(By.CSS_SELECTOR,"a[name^='tj']")  匹配name值以tj开头的a元素集合

            适用于:driver.find_elements_by_css_selector("a[name^='tj']")

    2、$=        driver.find_element(By.CSS_SELECTOR("标签名[属性名$='xxx']"))  匹配属性值以xxx结尾的元素

           例如:driver.find_elements(By.CSS_SELECTOR,"a[name$='s']")  匹配name值以s结尾的a元素集合

          适用于:driver.find_elements_by_css_selector("a[name$='s']")

     3、*=         driver.find_element(By.CSS_SELECTOR("标签名[属性名*='xxx']"))  匹配属性值包含xxx的元素

           例如:driver.find_elements(By.CSS_SELECTOR,"a[name*='tr']")  匹配name值包含tr的a元素集合

           适用于:driver.find_elements_by_css_selector("a[name*='tj']")

 
   4、使用xpath定位元素,相比cssSelector,xpath也是比较常用的一种定位元素的方式,因为它很方便,缺点是,消耗系统性能
    
    类似CSS_SELECTOR
 
    1、contains  driver.find_element(By.XPATH,"//标签名[contains(@属性名,'xxx')]")  匹配指定标签中指定属性中包含xxx的元素
 
      如:driver.find_element(By.XPATH,"//a[contains(@name,'tr')]")

    2、starts-with  driver.find_elements(By.XPATH,"//标签名[starts-with(@属性名,'xxx')]") 匹配指定标签中指定属性中以xxx开头元素
 

      如:driver.find_elements(By.XPATH,"//a[starts-with(@name,'tj')]")

        适用于:driver.find_elements_by_xpath("//a[starts-with(@name,'tj')]")

 
    3、使用xpath的text函数
      driver.find_element(By.XPATH,"//a[text()='新闻']") #绝对匹配
 
      driver.find_element(By.XPATH,"//a[contains(text(),'新闻')]") #包含匹配
 
      适用于:driver.find_elements_by_xpath("//a[contains(@name,'tr')]")
 
  
 

PhantomJS + Selenium webdriver 总结-元素定位的更多相关文章

  1. [selenium webdriver Java]元素定位——findElement/findElements

    策略 语法 语法 描述 By id driver.findElement(By.id()) driver.findElements(By.id()) 通过id属性定位元素 By name driver ...

  2. selenium webdriver python 元素定位

    总结   定位查找时,返回查找到的第一个match的元素.如果找不到,则 raise NoSuchElementException   单个元素定位: find_element_by_idfind_e ...

  3. Java + Selenium + WebDriver八大元素定位方式

    UI自动化测试的第一步就是进行元素定位,下面给大家介绍一下Selenium + WebDriver的八大元素定位方式.现在我们就以百度搜索框为例进行元素定位,如下图: 一.By.name() Java ...

  4. selenium+java二元素定位

    页面元素定位是自动化中最重要的事情, selenium Webdriver 提供了很多种元素定位的方法.  测试人员应该熟练掌握各种定位方法. 使用最简单,最稳定的定位方法. 自动化测试步骤 定位元素 ...

  5. selenium自动化之元素定位方法

    在使用selenium webdriver进行元素定位时,有8种基本元素定位方法(注意:并非只有8种,总共来说,有16种). 分别介绍如下: 1.name定位 (注意:必须确保name属性值在当前ht ...

  6. Python3-Selenium自动化测试框架(二)之selenium使用和元素定位

    Selenium自动化测试框架(二)之selenium使用和元素定位 (一)selenium的简单使用 1.导包 from selenium import webdriver 2.初始化浏览器 # 驱 ...

  7. Selenium WebDriver 8大定位方式

    Selenium WebDriver 8大定位方式: driver.find_element_by_id() driver.find_element_by_name() driver.find_ele ...

  8. selenium webdriver 表格的定位方法练习

    selenium webdriver 表格的定位方法 html 数据准备 <html> <body> <div id="div1"> <i ...

  9. Selenium的WebDriver API元素定位中的XPath和CSS

    元素的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上的. 浏览器的常规操作 import time from selenium import webdriver # 打开浏览器 dr ...

随机推荐

  1. python 几种循环性能测试: while, for, 列表生成式, map等

    直接上代码: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/07/24 16:23 import itertools imp ...

  2. 为什么很多国内公司不使用 jQuery 等开源 JS 框架(库),而选择自己开发 JavaScript 框架?

    http://www.zhihu.com/question/20099586/answer/13971670 我对公司JAVASCRIPT框架的定位思考:

  3. Linux:hping高级主机扫描

    https://www.aliyun.com/jiaocheng/167107.html https://blog.csdn.net/weixin_39762926/article/details/7 ...

  4. Openstack 网络服务 Neutron介绍和控制节点部署 (十)

    Neutron介绍 neutron是openstack重要组件之一,在以前是时候没有neutron项目. 早期的时候是没有neutron,早期所使用的网络的nova-network,经过版本改变才有个 ...

  5. nginx中使用perl模块

    转载自:http://www.netingcn.com/nginx-perl.html 如果对于一个绝大部分内容是静态的网站,只有极少数的地方需要动态显示,碰巧你又了解一点perl知识,那么nginx ...

  6. python spyder 今天突然打不开了【已解决】

    python spyder 我是设置开机启动的,先出现dos窗口,然后是蜘蛛网,后面就什么都没有了.然后百度了半天,在csdn看到一篇文章,试了一下,内牛满面! 方法:C:\Documents and ...

  7. php过滤表单输入的emoji表情

    1.过滤emoji表情的原因 在我们的项目开发中,emoji表情是个麻烦的东西,即使我们可以能存储,也不一定能完美显示,因为它的更新速度很快:在iOS以外的平台上,例如PC或者android.如果你需 ...

  8. 01Trie【p4551(poj3764)】 最长异或路径

    题目描述 给定一棵 n 个点的带权树,结点下标从 1 开始到 N .寻找树中找两个结点,求最长的异或路径. 异或路径指的是指两个结点之间唯一路径上的所有边权的异或. 个人: 首先强推一下01字典树(T ...

  9. Linux命令之find(二)

    接上一篇Linux命令之find(一) (1).实例 1.列出当前目录下及子目录下所有的.txt文件 [xf@xuexi ~]$ ls 1.txt 3.txt b.txt 公共 视频 文档 音乐 2. ...

  10. 扫描线三巨头 hdu1928&&hdu 1255 && hdu 1542 [POJ 1151]

    学习链接:http://blog.csdn.net/lwt36/article/details/48908031 学习扫描线主要学习的是一种扫描的思想,后期可以求解很多问题. 扫描线求矩形周长并 hd ...