Selenium-Python小記(一)

安裝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')
相關文章
相關標籤/搜索