首页 > 代码库 > PhantomJS + Selenium webdriver 总结-元素定位

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元素集合

 

 

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

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

 

     3、*=         driver.find_element(By.CSS_SELECTOR("标签名[属性名*=‘xxx‘]"))  匹配属性值包含xxx的元素
           例如:driver.find_elements(By.CSS_SELECTOR,"a[name*=‘tr‘]")  匹配name值包含tr的a元素集合

 

 

PhantomJS + Selenium webdriver 总结-元素定位