• PhantomJS + Selenium webdriver 总结-元素定位


      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')]")
     
      
     
  • 相关阅读:
    android开发聊天输入框at某人的分隔符选取
    使用curl下载小文件的方法记录一下
    google play store注意事项
    android开发使用setOnClickListener点击事件实现双击事件的解决方法
    mac下Android Studio配置文件的路径记录一下
    android studio更新到3.6以上后布局文件不能切换到xml编辑器?那就点进来吧
    mac上使用Xcode编译调试LearnOpenGL源代码的方法
    android开发fragment里面使用百度地图黑屏错位的解决方法
    es7之修饰器
    解决 bash: vue command not found
  • 原文地址:https://www.cnblogs.com/shaosks/p/6760852.html
Copyright © 2020-2023  润新知