元素定位

一、定位方法:根据页面的HTML属性对元素进行定位

二、具体的定位方式根据元素的HTML属性,具体定位时查找对象的条件有id,name,linktext\classname\tagname 等,根据不同的查找条件,有以下不同的定位方式:

1、driver.find_element_by_id('id值')

以百度首页为例,定位搜索框

#coding:utf-8

from selenium import webdriver

from selenium.webdriver.common.by import  By

driver=webdriver.Firefox()

driver.get('http://www.baidu.com')

driver.find_element_by_id('kw').send_keys('webdriver')

driver.quit()

2、driver.find_element_by_name('name值')

driver.find_element_by_name('wd')..send_keys('webdriver')

3、driver.find_element_by_class_name('classname值')

driver.find_element_by_class_name(''s_ipt'').send_keys('webdriver')                                

4、driver.find_element_by_link_text('link_text值')

driver.find_element_by_link_text(''新闻'')

5、driver.find_element_by_partial_link_text()

driver.find_element_by_partial_link_text(u闻“)

6、driver.find_element_by_css_selector()

driver.find_element_by_css_selector(‘#kw’)

7、driver.find_element_by_xpath()

driver.find_element_by_xpath(".//[@id='kw']")

8、driver.find_element_by_tag_name()

driver.find_elements_by_tag_name('input')[7]

[7]是因为用标签input定位时,页面中有多个input标签,所以在这里使用了多元素定位find_elements,并以索引下标来选择某一个

三、使用总结

各种方式在选择的时候应该怎么选择

1、当页面元素有id属性时,最好尽量用id来定位。但由于现实项目中很多程序员其实写的代码并不规范,会缺少很多标准属性,这时就只有选择其他定位方法

2、当要定位一组元素相同元素时,可以考虑用tagName或name

3、当有链接需要定位时,可以考虑linkText或partialLinkText方式

4、xpath很强悍,但定位性能不是很好,所以还是尽量少用。如果确实少数元素不好定位,可以选择xpath或cssSelector

 

posted @ 2017-09-18 15:29  panda901  阅读(290)  评论(0编辑  收藏  举报