Selenium八种基本定位方式---基于python

from selenium import  webdriver

driver=webdriver.Firefox()

driver.get("https://www.baidu.com")

进行web页面自动化测试,对页面上的元素进行定位和操作是核心,对页面元素的定位是进行自动化测试的基础

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

  • 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()

总结:定位一组元素和一个元素在语法上是将element修改为elements,而生成的是一个符合元素的list

查看元素的方法可以使用firefox安装组件firebug

以百度输入框为例

1.  通过id进行定位

    语法:driver.find_element_by_id(self,id)

 举例:driver.find_element_by_id("kw").send_keys("VseYoung")
    
    语法:driver.find_element(self,by,value)
    
    举例:driver.find_element(by="id",value="kw").send_keys("VseYoung")
    
2.    通过name进行定位

    语法;driver.find_element_by_name(self,name)
    
    举例:driver.find_element_by_name("wd").send_keys("VseYoung")
    
    语法:driver.find_element(self,by,value)
    
    举例:driver.find_element(by="name",value="wd").send_keys("VseYoung")

3.    通过class定位
    
    语法;driver.find_element_by_class_name(self,name)
    
    举例:driver.find_element_by_class_name("s_ipt").send_keys("VseYoung")

4.    通过tag定位
    一般页面上标签一样的很多,通过标签无法直接定位到某个元素
    通常用于定位一组元素
    
    语法;driver.find_element_by_tag_name(self,name)
    
    举例:driver.find_element_by_tag_name("input").send_keys("VseYoung")

5.    通过link定位
    主要用于文字链接的定位,比如下图

      语法;driver.find_element_by_link_text(self,link_text)
    
    举例:driver.find_element_by_link_text("新闻").click()

6.    通过xpath定位
    XPath是一种文档定位语言。因为HTML可以看做是XML的一种实现,所以selenium用户可使用这种强大的语言在web应用中定位。
    绝对路径方法:
        从根元素写起,当元素层级很深的时候,路径写的会很长,阅读性不好,也很难维护。不建议使绝对路径这样的方法。
    相对路径方法:
        通过Firebug很容易得到相对路径的xpath,打开Firebug插件,在页面上的搜索文本框,就可以显示出xpath了:

//表示当前页面某个目录下,input 表示定位元素的标签名,[@id=‘kw’] 表示这个元素的id 属性值等于kw;如果不想指定标签名也可以用星号(*)代替,.表示当前节点。

语法;driver.find_element_by_xpath(self,xpath)
    
    举例:driver.find_element_by_xpath("//input[@id='kw']").send_keys("123")
          driver.find_element_by_xpath(".//*[@id='su']").click()
    
    driver.find_element_by_xpath("//*[@id='kw']").click()
    详解:通过xpath寻找,任意(*代表)id属性为’kw‘的元素
    
    driver.find_element_by_xpath("//input[@id='kw']").click()
    详解:通过xpath寻找,任意id属性为’kw‘的input元素
    
    根据上级目录的属性来定位当前元素:
    driver.find_element_by_xpath("//span[@id=’input-container’]/input")    #通过上一级目录的id 属性定位  
    driver.find_element_by_xpath("//div[@id=’hd’]/form/span/input")        #通过上三级目录的id 属性定位  
    driver.find_element_by_xpath("//div[@name=’q’]/form/span/input")       #通过上三级目录的name 属性定位  

xpath 神器://input[text()=u'百度一下']

driver.find_element_by_xpath("//input[@value='百度一下']").click()


7.    通过css定位
    使用firepath组件即可查询相关元素的CSS定位
    CSS(Cascading Style Sheets)是一种语言,它被用来描述HTML 和XML 文档的表现
    
    语法:driver.find_element_by_css_selector(self,css_selector)
    
    举例:driver.find_element_by_css_selector("#kw").send_keys("VseYoung")
          driver.find_element_by_css_selector("#su").click()

8.    通过partial link text定位
    partial link text定位与link text的区别在于,partial link text定位时,只需要输入文字链接的部分内容即可完成定位
    
    语法;driver.find_element_by_partial_link_text(self,link_text)
    
    举例:driver.find_element_by_partial_link_text("新").click()
   

 

 

  

posted @ 2017-09-09 14:56  致橡树的你  阅读(5828)  评论(0编辑  收藏  举报