Python+Selenium 利用ID,XPath,tag name,link text,partial link text,class name,css,name定位元素


使用firefox瀏覽器,查看頁面元素,我們以“百度網頁”為示例

一、ID定位元素    利用find_element_by_id()方法來定位網頁元素對象

      ①、定位百度首頁,輸入框的元素

②、編寫示例代碼信息如下:

#coding=utf-8
from selenium import webdriver

driver=webdriver.Chrome() #打開chrome,如果沒有安裝chrome,換成firefox或ie瀏覽器
driver.maximize_window()  #最大化瀏覽器窗口
driver.implicitly_wait(8)  #設置隱式時間等待

driver.get("https://www.baidu.com")  #進入百度網頁
#利用ID定位元素
try:
    driver.find_element_by_id("kw")   #在①中可以查看定位到輸入框的id為“kw”
    print('test pass : ID found')
except Exception as e:
    print("Exception found",format(e))
driver.quit()

③ 運行代碼后,會打印出 “test pass : ID found”的成功信息

 

二、Xpath定位元素  利用find_element_by_xpath()方法來定位網頁元素對象,示例中,①我們先定位搜索輸入框元素②在輸入框輸入selenium③再定位搜索按鈕(百度一下)④在搜索結果中定位都selenium官網相關元素

       ①如下三個截圖是分別定位的輸入框元素、搜索按鈕元素、搜索結果中selenium官網元素的xpath

              

 

 

 

②編寫示例代碼信息如下:

#coding=utf-8
import time
from selenium import webdriver

driver=webdriver.Chrome() #打開chrome,如果沒有安裝chrome,換成firefox或ie瀏覽器
driver.maximize_window()  #最大化瀏覽器窗口
driver.implicitly_wait(8)  #設置隱式時間等待

driver.get("https://www.baidu.com")  #進入百度網頁

#利用 xpath定位元素
driver.find_element_by_xpath(".//*[@id='kw']").send_keys("selenium") #定位搜索輸入框,並在輸入框輸入selenium搜索信息
driver.find_element_by_xpath(".//*[@id='su']").click()  #定位“百度一下”的搜索按鈕,並點擊
time.sleep(2)
#第一種斷言方法
#這里通過元素xpath表達式來確定該元素顯示在結果列表,從而判斷Selenium官網這個連接顯示在結果列表
#這里采用了相對元素定位方法/.../
#通過selenium方法is_displayed() 來判斷我們的目標元素是否在頁面顯示
driver.find_element_by_xpath(".//*[@id='1']/h3/a").is_displayed()
#第二種判斷方法
ele_string=driver.find_element_by_xpath(".//*[@id='1']/h3/a").text
if(ele_string==u"Selenium - Web Browser Automation"):
    print("測試成功,結果和預期結果匹配")
driver.quit()

 ③上面代碼運行后,會打印出“測試成功,結果和預期結果匹配”的成功信息

 

三、tag name 定位元素  利用 find_element_by_tag_name() 方法 來定位頁面元素

①定位百度搜索輸入框的tag name,如下截圖

上面圖片中紅色圈選區域的標簽名稱都是tag name;實際上我們目標元素是輸入框,應該是input這個tag name,在圖中藍色高亮區域。但是如果只是通過input這個tag name來定位,發現上面有很多input的選項。所以我們擴大節點的參照選擇,我們選擇上面這個form來作為我們tag name

②示例代碼如下

 1 #coding=utf-8
 2  3 from selenium import webdriver
 4 
 5 driver=webdriver.Chrome() #打開chrome,如果沒有安裝chrome,換成firefox或ie瀏覽器
 6 driver.maximize_window()  #最大化瀏覽器窗口
 7 driver.implicitly_wait(8)  #設置隱式時間等待
 8 
 9 driver.get("https://www.baidu.com")  #進入百度網頁
10 
11 #利用tag name定位元素
12 driver.find_element_by_tag_name("form")
13 print("test pass : tag name found")
driver.quit()

③代碼運行后,打印“test pass : tag name found” 成功提示

 

四、link text 定位元素   利用find_element_by_link_text()方法 定位頁面元素

①定位百度首頁“新聞”這個文本字段來定義這個跳轉鏈接元素

②示例代碼如下:

 1 #coding=utf-8
 2  3 from selenium import webdriver
 4 
 5 driver=webdriver.Chrome() #打開chrome,如果沒有安裝chrome,換成firefox或ie瀏覽器
 6 driver.maximize_window()  #最大化瀏覽器窗口
 7 driver.implicitly_wait(8)  #設置隱式時間等待
 8 
 9 driver.get("https://www.baidu.com")  #進入百度網頁
10 
11 #利用 link text定位元素
12 driver.find_element_by_link_text("新聞")
13 print("test pass ")
14 driver.quit()

運行代碼成功,打印成功信息

五、partial link text定位元素,partial link text和link text有點類似,區別就是選擇這個元素的link text中一部分字段, 利用find_element_by_partial_link_text()方法定義頁面元素

       ①以下面截圖中被選中的信息做目標元素

 

②示例代碼如下:

 1 #coding=utf-8
 2  3 from selenium import webdriver
 4 
 5 driver=webdriver.Chrome() #打開chrome,如果沒有安裝chrome,換成firefox或ie瀏覽器
 6 driver.maximize_window()  #最大化瀏覽器窗口
 7 driver.implicitly_wait(8)  #設置隱式時間等待
 8 
 9 driver.get("https://www.baidu.com")  #進入百度網頁
10 #利用partial link text 定位元素
11 driver.find_element_by_partial_link_text("設為主頁").click()
12 print("test pass : Success")
13 time.sleep(10) #停留時間,是為了查看點擊進入的頁面,是否成功    
14 driver.quit()

運行成功后,可以查看到進入的頁面,和打印的成功信息

 

六、class name定位元素  ,利用find_element_by_class_name()方法來定義頁面元素

①定義百度首頁輸入框元素,查看class如下截圖

②示例代碼如下:

#coding=utf-8
from selenium import webdriver

driver=webdriver.Chrome() #打開chrome,如果沒有安裝chrome,換成firefox或ie瀏覽器
driver.maximize_window()  #最大化瀏覽器窗口
driver.implicitly_wait(8)  #設置隱式時間等待

driver.get("https://www.baidu.com")  #進入百度網頁
#利用class name定位元素
driver.find_element_by_class_name("s_ipt")
print("test pass :Success!!")
driver.quit()

運行代碼后,打印成功信息

 

七、CSS 定位元素   利用find_element_by_css() 方法

示例代碼如下:

 1 #coding=utf-8
 2 from selenium import webdriver
 3 
 4 driver=webdriver.Chrome() #打開chrome,如果沒有安裝chrome,換成firefox或ie瀏覽器
 5 driver.maximize_window()  #最大化瀏覽器窗口
 6 driver.implicitly_wait(8)  #設置隱式時間等待
 7 
 8 driver.get("https://www.baidu.com")  #進入百度網頁
 9 driver.find_element_by_css_selector("#su") # 找 百度一下 這個按鈕  
10 print ('test pass')
11   
12 driver.quit()  

 

八、name定位  ,利用find_element_by_name()方法

①定位百度輸入框元素的name

②示例代碼如下:

#coding=utf-8
from selenium import webdriver

driver=webdriver.Chrome() #打開chrome,如果沒有安裝chrome,換成firefox或ie瀏覽器
driver.maximize_window()  #最大化瀏覽器窗口
driver.implicitly_wait(8)  #設置隱式時間等待

driver.get("https://www.baidu.com")  #進入百度網頁
driver.find_element_by_name("wd")  # 這里百度搜索輸入框有name = 'wd'這個節點信息  
print ('test pass: element found by name value')  
driver.quit()

運行代碼后,打印出成功信息 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM