元素定位
一、定位方法:根据页面的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