安裝seleniumcss
pip install selenium
使用seleniumhtml
1.導入selenium庫web
from selenium import webdriver
2.建立實例app
driver = weibdriver.FireFox()
3.打開網址ui
driver.get('http://www.baidu.com')
4.定位UI元素 示例:spa
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
(1)使用ID定位:根據標記id屬性的值進行元素定位,我的比較推薦,由於id屬性大部分具備惟一性,不用擔憂定位錯元素,除非自動生成id屬性,會出現「no such element」的報錯。code
driver.find_element_by_id("kw") or from selenium.webdriver.common.by import By driver.find_element(by=By.ID,value="kw")
(2)使用classname定位:根據標記class屬性的值進行定位,除非該class屬性值是惟一的,不然會定位該class屬性值第一次出現的位置orm
driver.find_element_by_class_name("s_ipt") or from selenium.webdriver.common.by import By driver.find_element(By,CLASS_NAME,"s_ipt")
(3)使用tag name 定位:根據元素的標記名稱進行定位,和classname定位同樣,若是該tagname不是惟一的,則會定位值該tagname第一次出現的位置htm
driver.find_element_by_tag_name("input") or from selenium.webdriver.common.by import By driver.find_eleme(BY.TAG_NAME,"input")
(4)使用name定位:根據標記的name屬性進行定位,同id定位同樣,惟一性較強圖片
driver.find_element_by_name("wd") or from selenium.webdriver.common.by import By driver.find_element(BY.NAME,"wd")
(5)使用link text定位:此定位方法適用於文本連接標記(<a>),如
<a onmousedown="return ns_c({'fm':'behs','tab':'tj_about'})" href="http://home.baidu.com">關於百度</a>
這樣的狀況。經過「關於百度」來定位元素
driver.find_element_by_link_text("關於百度") or from selenium.webdriver.common.by import BY drvier.find_element(BY.LINK_TEXT,"關於百度")
(6)使用partial link text定位:此定位方法同link text定位類似,可是比link text定位使用範圍相對更普遍,能夠經過隻言片語便能能進行定位,可是其準確性相比link text稍微差一些
driver.find_element_by_partial_link_text(‘’關於「) or from selenium.webdrvier.common,by import BY drvier.find_element(BY.PARTIAL_LINK_TEXT,"關於")
(7)使用xpath定位:xpath定位的手段比較多,常見有以下幾種: 定位百度首頁搜索輸入框 方法一:使用目標元素的絕對路徑,以下面的狀況
driver.find_element_by_xpath('/html/body/div[1]/div[1]/div/div[1]/div/form/span[1]/input')
方法二:使用元素屬性定位:
#使用id屬性 driver.find_element_by_xpath('//input[@id=「kw」]’) #使用name屬性 driver.find_element_by_xpath('//input@[name=「wd"]) #使用class屬性 driver.find_element_by_xpath('//input@[class="s_ipt"]) #使用多個屬性 driver.find_element_by_xpath('//input@[class="s_ipt"] and @[name="wd"]')
要說明的是 //表示頁面某個目錄下
方法三:使用目標元素絕對路徑和屬性定位
driver.find_element_by_xpath("//span@[class='quickdelete-wrap'/input]")
(8)使用css選擇器定位 方法一:使用目標元素的絕對路徑,以下面的狀況
driver.find_element_by_css_selector('html>body>div>wrapper>div>div>div>div>form>span>input')
多個標記使用'>'分開,
方法二:使用元素屬性定位:
#使用id屬性 driver.find_element_by_css_selector('#kw’) #使用class屬性 driver.find_element_by_css_selector('.s_ipt') #使用標籤 driver.find_element_by_css_selector('input') #使用某個屬性 driver.find_element_by_css_selector('input[class="s_ipt"]')
要說明的是 //表示頁面某個目錄下
方法三:使用目標元素絕對路徑和屬性定位
driver.find_element_by_css_selector('span.bg.s_ipt_wr.quickdelete-wrap>input#kw')