用selenium操作瀏覽器進行自動化操作其實是通過元素屬性執(zhí)行相關(guān)操作。所以,我們要知道怎樣去查找元素,定位元素。
常見的定位屬性有:
#查找元素的id
find_elements_by_id(id)
find_elements_by_id(id)
#查找元素的name
find_element_by_name(name)
find_elements_by_name(name)
#查找元素的鏈接文本
find_element_by_link_text(link_text)
find_elements_by_link_text(link_text)
#查找元素的鏈接的部分文本
find_element_by_partial_link_text(link_text)
find_elements_by_partial_link_text(link_text)
#查找元素的標簽名
find_element_by_tag_name(name)
find_elements_by_tag_name(name)
#查找元素的xpath
find_element_by_xpath(xpath)
#查找元素內(nèi)的子元素的xpath
find_elements_by_xpath(xpath)
#查找一個元素的類名
find_element_by_class_name(name)
#查找元素的類名
find_elements_by_class_name(name)
#查找并返回一個元素的CSS 選擇器
find_element_by_css_selector(css_selector)
#查找并返回多個元素的CSS 選擇器列表
find_elements_by_css_selector(css_selector)
webdriver中常用的操作方法有:
.click() 進行點擊操作,用于點擊一個按鈕。
.send_keys() 在對象上模擬按鍵輸入,用于在一個輸入框里輸入內(nèi)容。
.clear() 清除對象的內(nèi)容。
.text 獲取該元素的文本。
.submit() 提交表單。
.get_attrbute 獲得屬性值。
以百度首頁為例:
#coding:utf-8
from selenium import webdriverimport time
brower = webdriver.Firefox()
brower.get("http://www.baidu.com")
#根據(jù)元素的類名進行定位
brower.find_element_by_class_name('s_ipt').send_keys('12306')
#根據(jù)元素的id進行定位
brower.find_element_by_id('kw').send_keys('12306')
#根據(jù)元素的name進行定位
brower.find_element_by_name('wd').send_keys('selenium')
#根據(jù)元素的xpath進行定位
brower.find_element_by_xpath("//input[@id = 'kw']").send_keys('selenium')
#根據(jù)元素的鏈接文本進行定位
brower.find_element_by_link_text(u'糯米').click()
#根據(jù)元素的CSS選擇器進行定位
#----------------第一種id進行定位------------------
brower.find_element_by_css_selector('#kw').send_keys(u'定位')
brower.find_element_by_css_selector('#su').click()
#----------------第二種屬性元素定位------------------
brower.find_element_by_css_selector('input[id = "kw"]').send_keys(u'自動化')
brower.find_element_by_css_selector('input[id = "su"]').click()
#----------------第三種標簽進行定位------------------
brower.find_element_by_css_selector('input.s_ipt').send_keys(u'百度')
brower.find_element_by_css_selector('input.bg').click()
#----------------第四種class屬性組合定位------------------
brower.find_element_by_css_selector('span.bg>input.s_ipt').send_keys(u'測試')
brower.find_element_by_css_selector('span.bg>input.bg').click()
#----------------第五種id屬性組合定位------------------
brower.find_element_by_css_selector('span>input#kw').send_keys(u'地鐵')
brower.find_element_by_css_selector('span>input#su').click()
#----------------第六種class屬性定位------------------
brower.find_element_by_css_selector('.s_ipt').send_keys(u'高鐵')
#或者
brower.find_element_by_css_selector('.s_btn').click()
brower.find_element_by_css_selector('.bg.s_btn').click()
#----------------第七種class與id組合定位------------------
brower.find_element_by_css_selector('.bg.s_ipt_wr.quickdelete-wrap>#kw').send_keys('selenium')
brower.find_element_by_css_selector('#su').click()
time.sleep(3)
brower.quit()
注:用css定位時只有元素"id"可以用#,元素"class"用"."