PhantomJS + Selenium webdriver 总结-元素定位
2017-04-25 10:49
441 查看
webdriver提供了丰富的API,有多种定位策略:id,name,css选择器,xpath等,其中css选择器定位元素效率相比xpath要高些,使用id,name属性定位元素是最可靠,效率最高的一种办法。
1、元素定位的方法:find_element() 与find_elements()
[b]find_element[/b]() 该方法返回基于指定查询条件的webElement对象,或抛出不符合条件的异常 eg:element = driver.find_element(By.ID,'u1')
findElements() 该方法返回指定查询条件的WebElement的对象集合,或抛出不符合条件的异常
2、WebElement对象提供的各种定位元素策略
[b] ID:[/b]driver.findElement(By.ID,'elementID')
Name:driver.findElement(By.NAME,'elementName')
[b] className:[/b]driver.findElement(By.CLASS_NAME,'elementClassName') [b] [/b]
[b] tagName:[/b]driver.findElement(By.TAG_NAME,'htmlTagName')
linkText:driver.findElement(By.LINK_TEXT,'linkText')
partialLinkText:driver.findElement(By.PARTIAL_LINK_TEXT,'partialLinkText')
[b] css:[/b]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')]")
1、元素定位的方法:find_element() 与find_elements()
[b]find_element[/b]() 该方法返回基于指定查询条件的webElement对象,或抛出不符合条件的异常 eg:element = driver.find_element(By.ID,'u1')
findElements() 该方法返回指定查询条件的WebElement的对象集合,或抛出不符合条件的异常
2、WebElement对象提供的各种定位元素策略
[b] ID:[/b]driver.findElement(By.ID,'elementID')
Name:driver.findElement(By.NAME,'elementName')
[b] className:[/b]driver.findElement(By.CLASS_NAME,'elementClassName') [b] [/b]
[b] tagName:[/b]driver.findElement(By.TAG_NAME,'htmlTagName')
linkText:driver.findElement(By.LINK_TEXT,'linkText')
partialLinkText:driver.findElement(By.PARTIAL_LINK_TEXT,'partialLinkText')
[b] css:[/b]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')]")
相关文章推荐
- selenium webdriver 学习总结-元素定位
- Selenium webdriver 学习总结-元素定位
- selenium webdriver 学习总结-元素定位(一)
- selenium webdriver 学习总结-元素定位(一)
- Selenium webdriver 学习总结-元素定位
- Selenium2(WebDriver)总结(三)---元素定位方法
- selenium webdriver 学习总结-元素定位
- selenium WebDriver定位元素学习总结
- Selenium webdriver 学习总结-元素定位
- selenium webdriver 学习总结-元素定位
- selenium WebDriver定位元素学习总结
- selenium webdriver 学习总结-元素定位
- Selenium webdriver 学习总结-元素定位
- Selenium webdriver 元素定位方法总结
- 总结Selenium自动化测试方法(三)WebDriver定位元素方法
- Selenium webdriver 学习总结-元素定位
- selenium webdriver 学习总结-元素定位(一)
- Selenium(四)――webdriver 之定位页面元素
- selenium webdriver定位不到元素的五种原因及解决办法
- 在Selenium WebDriver中使用By.Xpath快速定位页面元素