selenium定位元素的方法

 

一、id定位: find_element_by_id()css

從上面定位到的搜索框屬性中,有個id="kw"的屬性,咱們能夠經過這個id定位到這個搜索框html

 代碼:web

複製代碼
# coding = utf-8
from time import sleep
from selenium import webdriver

# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啓動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.get(r'https://www.baidu.com/')
# 經過id定位搜索框,並輸入selenium
driver.find_element_by_id('kw').send_keys('selenium')
# 等待5秒
sleep(5)
# 退出
driver.quit()
複製代碼

二、name定位: find_element_by_name()chrome

從上面定位到的搜索框屬性中,有個name="wd"的屬性,咱們能夠經過這個name定位到這個搜索框瀏覽器

代碼:學習

複製代碼
# coding = utf-8
from time import sleep
from selenium import webdriver

# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啓動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.get(r'https://www.baidu.com/')
# 經過name定位搜索框,並輸入selenium
driver.find_element_by_name('wd').send_keys('selenium')
# 等待5秒
sleep(5)
# 退出
driver.quit()
複製代碼

三、class定位:find_element_by_class_name()ui

從上面定位到的搜索框屬性中,有個class="s_ipt"的屬性,咱們能夠經過這個class定位到這個搜索框spa

代碼:code

複製代碼
# coding = utf-8
from time import sleep
from selenium import webdriver

# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啓動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.get(r'https://www.baidu.com/')
# 經過class定位搜索框,並輸入selenium
driver.find_element_by_class_name('s_ipt').send_keys('selenium')
# 等待5秒
sleep(5)
# 退出
driver.quit()
複製代碼

四、tag定位:find_element_by_tag_name()htm

若是懂HTML知識,咱們就知道HTML是經過tag來定義功能的,好比input是輸入,table是表格,等等...。每一個元素其實就是一個tag,一個tag每每用來定義一類功能,咱們查看百度首頁的html代碼,能夠看到有不少div,input,a等tag,因此很難經過tag去區分不一樣的元素。基本上在咱們工做中用不到這種定義方法,僅瞭解就行。下面代碼僅作參考,運行時一定報錯

代碼:

複製代碼
# coding = utf-8
from time import sleep
from selenium import webdriver

# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啓動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.get(r'https://www.baidu.com/')
# 經過tag定位搜索框,並輸入selenium, 此處必報錯
driver.find_element_by_tag_name('input').send_keys('selenium')
# 等待5秒
sleep(5)
# 退出
driver.quit()
複製代碼

五、link定位:find_element_by_link_text()

此種方法是專門用來定位文本連接的,好比百度首頁右上角有「新聞」,「hao123」,「地圖」等連接

咱們來定位「新聞」這個連接元素

代碼:

複製代碼
# coding = utf-8
from time import sleep
from selenium import webdriver

# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啓動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.get(r'https://www.baidu.com/')
# 經過link定位"新聞"這個連接並點擊
driver.find_element_by_link_text('新聞').click()
# 等待5秒
sleep(5)
# 退出
driver.quit()
複製代碼

六、partial_link定位:find_element_by_partial_link_text()

有時候一個超連接的文本很長很長,咱們若是所有輸入,既麻煩,又顯得代碼很不美觀,這時候咱們就能夠只截取一部分字符串,用這種方法模糊匹配了。

咱們用這種方法來定位百度首頁的「新聞」超連接

複製代碼
# coding = utf-8
from time import sleep
from selenium import webdriver

# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啓動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.get(r'https://www.baidu.com/')
# 經過partial_link定位"新聞"這個連接並點擊
driver.find_element_by_partial_link_text('').click()
# 等待5秒
sleep(5)
# 退出
driver.quit()
複製代碼

七、xpath定位:find_element_by_xpath()

前面介紹的幾種定位方法都是在理想狀態下,有必定使用範圍的,那就是:在當前頁面中,每一個元素都有一個惟一的id或name或class或超連接文本的屬性,那麼咱們就能夠經過這個惟一的屬性值來定位他們。

可是在實際工做中並不是有這麼美好,有時候咱們要定位的元素並無id,name,class屬性,或者多個元素的這些屬性值都相同,又或者刷新頁面,這些屬性值都會變化。那麼這個時候咱們就只能經過xpath或者CSS來定位了。

代碼:

複製代碼
# coding = utf-8
from time import sleep
from selenium import webdriver

# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啓動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.get(r'https://www.baidu.com/')
# 經過xpath定位搜索框,並輸入selenium
driver.find_element_by_xpath("//*[@id='kw']").send_keys('selenium')
# 等待5秒
sleep(5)
# 退出
driver.quit()
複製代碼

八、CSS定位:find_element_by_css_selector()

這種方法相對xpath要簡潔些,定位速度也要快些,可是學習起來會比較難理解,這裏只作下簡單的介紹。

CSS定位百度搜索框

複製代碼
# coding = utf-8
from time import sleep
from selenium import webdriver

# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啓動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.get(r'https://www.baidu.com/')
# 經過CSS定位搜索框,並輸入selenium
driver.find_element_by_css_selector('#kw').send_keys('selenium')
# 等待5秒
sleep(5)
# 退出
driver.quit()

 

 

參考:

http://www.javashuo.com/article/p-gsnvrnnf-ea.html

 

 

一、id定位: find_element_by_id()

從上面定位到的搜索框屬性中,有個id="kw"的屬性,咱們能夠經過這個id定位到這個搜索框

 代碼:

複製代碼
# coding = utf-8
from time import sleep
from selenium import webdriver

# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啓動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.get(r'https://www.baidu.com/')
# 經過id定位搜索框,並輸入selenium
driver.find_element_by_id('kw').send_keys('selenium')
# 等待5秒
sleep(5)
# 退出
driver.quit()
複製代碼

二、name定位: find_element_by_name()

從上面定位到的搜索框屬性中,有個name="wd"的屬性,咱們能夠經過這個name定位到這個搜索框

代碼:

複製代碼
# coding = utf-8
from time import sleep
from selenium import webdriver

# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啓動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.get(r'https://www.baidu.com/')
# 經過name定位搜索框,並輸入selenium
driver.find_element_by_name('wd').send_keys('selenium')
# 等待5秒
sleep(5)
# 退出
driver.quit()
複製代碼

三、class定位:find_element_by_class_name()

從上面定位到的搜索框屬性中,有個class="s_ipt"的屬性,咱們能夠經過這個class定位到這個搜索框

代碼:

複製代碼
# coding = utf-8
from time import sleep
from selenium import webdriver

# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啓動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.get(r'https://www.baidu.com/')
# 經過class定位搜索框,並輸入selenium
driver.find_element_by_class_name('s_ipt').send_keys('selenium')
# 等待5秒
sleep(5)
# 退出
driver.quit()
複製代碼

四、tag定位:find_element_by_tag_name()

若是懂HTML知識,咱們就知道HTML是經過tag來定義功能的,好比input是輸入,table是表格,等等...。每一個元素其實就是一個tag,一個tag每每用來定義一類功能,咱們查看百度首頁的html代碼,能夠看到有不少div,input,a等tag,因此很難經過tag去區分不一樣的元素。基本上在咱們工做中用不到這種定義方法,僅瞭解就行。下面代碼僅作參考,運行時一定報錯

代碼:

複製代碼
# coding = utf-8
from time import sleep
from selenium import webdriver

# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啓動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.get(r'https://www.baidu.com/')
# 經過tag定位搜索框,並輸入selenium, 此處必報錯
driver.find_element_by_tag_name('input').send_keys('selenium')
# 等待5秒
sleep(5)
# 退出
driver.quit()
複製代碼

五、link定位:find_element_by_link_text()

此種方法是專門用來定位文本連接的,好比百度首頁右上角有「新聞」,「hao123」,「地圖」等連接

咱們來定位「新聞」這個連接元素

代碼:

複製代碼
# coding = utf-8
from time import sleep
from selenium import webdriver

# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啓動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.get(r'https://www.baidu.com/')
# 經過link定位"新聞"這個連接並點擊
driver.find_element_by_link_text('新聞').click()
# 等待5秒
sleep(5)
# 退出
driver.quit()
複製代碼

六、partial_link定位:find_element_by_partial_link_text()

有時候一個超連接的文本很長很長,咱們若是所有輸入,既麻煩,又顯得代碼很不美觀,這時候咱們就能夠只截取一部分字符串,用這種方法模糊匹配了。

咱們用這種方法來定位百度首頁的「新聞」超連接

複製代碼
# coding = utf-8
from time import sleep
from selenium import webdriver

# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啓動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.get(r'https://www.baidu.com/')
# 經過partial_link定位"新聞"這個連接並點擊
driver.find_element_by_partial_link_text('').click()
# 等待5秒
sleep(5)
# 退出
driver.quit()
複製代碼

七、xpath定位:find_element_by_xpath()

前面介紹的幾種定位方法都是在理想狀態下,有必定使用範圍的,那就是:在當前頁面中,每一個元素都有一個惟一的id或name或class或超連接文本的屬性,那麼咱們就能夠經過這個惟一的屬性值來定位他們。

可是在實際工做中並不是有這麼美好,有時候咱們要定位的元素並無id,name,class屬性,或者多個元素的這些屬性值都相同,又或者刷新頁面,這些屬性值都會變化。那麼這個時候咱們就只能經過xpath或者CSS來定位了。

代碼:

複製代碼
# coding = utf-8
from time import sleep
from selenium import webdriver

# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啓動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.get(r'https://www.baidu.com/')
# 經過xpath定位搜索框,並輸入selenium
driver.find_element_by_xpath("//*[@id='kw']").send_keys('selenium')
# 等待5秒
sleep(5)
# 退出
driver.quit()
複製代碼

八、CSS定位:find_element_by_css_selector()

這種方法相對xpath要簡潔些,定位速度也要快些,可是學習起來會比較難理解,這裏只作下簡單的介紹。

CSS定位百度搜索框

複製代碼
# coding = utf-8
from time import sleep
from selenium import webdriver

# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啓動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.get(r'https://www.baidu.com/')
# 經過CSS定位搜索框,並輸入selenium
driver.find_element_by_css_selector('#kw').send_keys('selenium')
# 等待5秒
sleep(5)
# 退出
driver.quit()
相關文章
相關標籤/搜索