1、id定位:find_element_by_id()
通过id属性定位,下列代码通过搜索框的id属性kw和搜索按钮id属性su来定位。
from selenium import webdriver
driver = webdriver.Chrome("D:\\chromedriver.exe")
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("selenuim")
driver.find_element_by_id("su").click()
driver.quit()
2、name定位: find_element_by_name()
通过name属性定位,下列代码通过搜索框的name属性wd来定位。
from selenium import webdriver
driver = webdriver.Chrome("D:\\chromedriver.exe")
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
driver.find_element_by_name("wd").send_keys("selenuim")
driver.quit()
3,class定位:find_element_by_class_name()
通过class属性定位,下列代码通过搜索框的class属性s_ipt和搜索按钮class属性btn self-btn bg s_btn来定位。
from selenium import webdriver
driver = webdriver.Chrome("D:\\chromedriver.exe")
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
driver.find_element_by_class_name("s_ipt").send_keys("selenuim")
driver.find_element_by_class_name("btn self-btn bg s_btn").click()
driver.quit()
4、tag定位:find_element_by_tag_name()
每个元素其实就是一个tag,一个tag往往用来定义一类功能。像input、div这种都是tag,由于页面上这样的元素太多,tag难以区分。不建议使用
5、link定位:find_element_by_link_text()
通过超链接上的文本来定位元素,比如百度首页右上角有“新闻”,“hao123”,“地图”等链接
from selenium import webdriver
driver = webdriver.Chrome("D:\\chromedriver.exe")
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
# 通过link定位"新闻"这个链接并点击
driver.find_element_by_link_text('新闻').click()
# 等待5秒
sleep(5)
# 退出
driver.quit()
6、partial_link定位:find_element_by_partial_link_text()
超链接上的关键字匹配,相当于模糊匹配
from selenium import webdriver
driver = webdriver.Chrome("D:\\chromedriver.exe")
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
driver.find_element_by_partial_link_text('闻').click()
# 等待5秒
sleep(5)
# 退出
driver.quit()
7、xpath定位:find_element_by_xpath()
xpath可定位到页面上的任意元素
查找页面根元素://
查找页面上所有的input元素://input
查找页面上第一个form元素内的直接子input元素(即只包括form元素的下一级input元素)://form/input
查找页面上第一个form元素://form
查找页面上id为loginForm的form元素://form[@id='loginForm']
查找页面上具有name属性为username的input元素://input[@name='username']
查找页面上id为loginForm的form元素下的第一个input元素://form[@id='loginForm']/input[1]
查找页面具有name属性为contiune并且type属性为button的input元素://input[@name='continue'][@type='button']
查找页面上id为loginForm的form元素下第4个input元素://form[@id='loginForm']/input[4]
以百度主页为例,搜索框的HTML示例代码如下,其xpath为//*[@id=''kw]
。
from selenium import webdriver
driver = webdriver.Chrome("D:\\chromedriver.exe")
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
ele = driver.find_element_by_xpath("//*[@id='kw']").send_keys('selenuim')
driver.find_element_by_xpath("//*[@id='su']").click()
driver.quit()
8、CSS定位:find_element_by_css_selector()
css比xpath更简洁些,速度更快
from selenium import webdriver
driver = webdriver.Chrome("D:\\chromedriver.exe")
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
ele = driver.find_element_by_css_selector('#kw').send_keys('selenuim')
driver.find_element_by_css_selector("#su").click()
driver.quit()