1. 程式人生 > >002 selenium 元素定位

002 selenium 元素定位

 

 

'''
時間:2018/11/26
功能:unittest
目錄:
    一: 瀏覽器操作
        1 開啟網頁
        2 設定休眠
        3 頁面重新整理
        4 頁面切換 
        5 設定視窗大小
        6 截圖
        7 退出
    二: 八種定位
        1 find_element_by_id
        2 find_element_by_name
        3 find_element_by_class_name
        4 find_element_by_tag_name
    5 find_element_by_link_text 6 find_element_by_partial_link_text 7 xpath 8 css 9 複數 三: 操作物件 1 常規操作 2 滑鼠事件 3 鍵盤事件 四: Error      1 沒許可權   2
'''

 

一: 瀏覽器操作
  1 開啟網頁

# coding:utf-8
from selenium import webdriver  # 匯入模組 - webdriver

driver = webdriver.Firefox()    # 啟動瀏覽器 - Firefox
#driver = webdriver.Chrome()     # 啟動瀏覽器 - Chrome
#driver = webdriver.Ie()         # 啟動瀏覽器 - Ie

driver.get("https://www.baidu.com") # 訪問url - 百度

 

  2 設定休眠

# coding:utf-8
from selenium import webdriver  # 匯入模組 - webdriver
import time             # 匯入模組 - time

driver = webdriver.Firefox()    # 啟動瀏覽器 - Firefox

driver.get("https://www.baidu.com") # 訪問url - 百度
time.sleep(3)                       # 設定休眠 - 3秒鐘
driver.quit()                       #
退出瀏覽器

 

  3 頁面重新整理

# coding:utf-8
from selenium import webdriver  # 匯入模組 - webdriver
import time                     # 匯入模組 - time

driver = webdriver.Firefox()    # 啟動瀏覽器 - Firefox

driver.get("https://www.baidu.com") # 訪問url - 百度
time.sleep(3)                       # 設定休眠 - 3秒鐘
driver.refresh()                    # 重新整理頁面

driver.quit()                       # 退出瀏覽器

 


  4 頁面切換

# coding:utf-8
from selenium import webdriver  # 匯入模組 - webdriver
import time                      # 匯入模組 - time

driver = webdriver.Firefox()    # 啟動瀏覽器 - Firefox

driver.get("https://www.baidu.com") # 訪問url - 百度
time.sleep(2)                       # 設定休眠 - 2秒鐘
driver.get("https://www.cnblogs.com/huafan/") # 訪問url - 部落格園
time.sleep(2)                       # 設定休眠 - 2秒鐘

driver.back()       # 返回上一頁
time.sleep(2)       # 設定休眠 - 2秒鐘
driver.forward()    # 返回下一頁
time.sleep(2)       # 設定休眠 - 2秒鐘

driver.quit()   # 退出瀏覽器

 

  5 設定視窗大小

# coding:utf-8
from selenium import webdriver  # 匯入模組 - webdriver
import time                      # 匯入模組 - time

driver = webdriver.Firefox()    # 啟動瀏覽器 - Firefox

driver.get("https://www.baidu.com") # 訪問url - 百度
time.sleep(2)                       # 設定休眠 - 2秒鐘

driver.set_window_size(540, 960)    # 設定視窗 - 540*960
time.sleep(2)                       # 設定休眠 - 2秒鐘
driver.maximize_window()            # 設定視窗 - 最大化
time.sleep(2)                       # 設定休眠 - 2秒鐘

driver.quit()   # 退出瀏覽器

 

  6 截圖

# coding:utf-8
from selenium import webdriver  # 匯入模組 - webdriver
import time                     # 匯入模組 - time

driver = webdriver.Firefox()    # 啟動瀏覽器 - Firefox

driver.get("https://www.baidu.com") # 訪問url - 百度
time.sleep(2)                       # 設定休眠 - 2秒鐘

driver.get_screenshot_as_file("C:\\test_001.jpg")   # 截圖瀏覽器
time.sleep(2)                                       # 設定休眠 - 2秒鐘

driver.quit()   # 退出瀏覽器

 

  7 退出

# coding:utf-8
from selenium import webdriver  # 匯入模組 - webdriver
import time                      # 匯入模組 - time

driver = webdriver.Firefox()    # 啟動瀏覽器 - Firefox
driver.get("https://www.baidu.com") # 訪問url - 百度
time.sleep(2)                       # 設定休眠 - 2秒鐘

#driver.close()  # 關閉視窗 - 當前視窗
driver.quit()   # 退出程序 - 瀏覽器; 刪除檔案 - C盤臨時

 

二: 八種定位
  1 find_element_by_id

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

driver=webdriver.Firefox()            # 啟動瀏覽器 - Firefox
driver.get("https://www.baidu.com") # 訪問url - 百度
time.sleep(1)

# 步驟: 定位 + 操作 + 資料
# 定位(控制元件) + 操作(鍵盤/滑鼠) + 資料
driver.find_element_by_id("kw").send_keys("汁蟲 部落格園") # 定位 - 百度搜索框; 操作 - 鍵盤輸入; 資料 - 汁蟲 部落格園
driver.find_element_by_id("su").click()                  # 定位 - 百度按鈕; 操作 - 滑鼠點選; 資料 - 無

driver.find_element_by_id("kw").clear()                  # 定位 - 百度搜索框; 操作 - 清除;
driver.find_element_by_id("kw").send_keys("部落格園 汁蟲") # 定位 - 百度搜索框; 操作 - 鍵盤輸入; 資料 - 部落格園 汁蟲
driver.find_element_by_id("su").click()                  # 定位 - 百度搜索框; 操作 - 清除;

driver.quit()       # 退出程式

 

  2 find_element_by_name

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

driver=webdriver.Firefox()            # 啟動瀏覽器 - Firefox
driver.get("https://www.baidu.com") # 訪問url - 百度
time.sleep(1)

# 步驟: 定位 + 操作 + 資料
driver.find_element_by_name("wd").send_keys("汁蟲 部落格園")  # 定位 - 百度搜索框; 操作 - 鍵盤輸入; 資料 - 汁蟲 部落格園
driver.find_element_by_id("su").click()                     # 定位 - 百度按鈕; 操作 - 滑鼠點選; 資料 - 無
driver.quit()       # 退出程式

 

  3 find_element_by_class_name

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

driver=webdriver.Firefox()            # 啟動瀏覽器 - Firefox
driver.get("https://www.baidu.com") # 訪問url - 百度
time.sleep(1)

# 步驟: 定位 + 操作 + 資料
driver.find_element_by_class_name("s_ipt").send_keys("汁蟲 部落格園")  # 定位 - 百度搜索框; 操作 - 鍵盤輸入; 資料 - 汁蟲 部落格園
driver.find_element_by_class_name("s_btn").click()                     # 定位 - 百度按鈕; 操作 - 滑鼠點選; 資料 - 無

driver.quit()       # 退出程式

 

  4 find_element_by_tag_name

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

driver=webdriver.Firefox()            # 啟動瀏覽器 - Firefox
driver.get("https://www.baidu.com") # 訪問url - 百度
time.sleep(2)

# 步驟: 定位 + 操作 + 資料
driver.find_element_by_tag_name("area").click() # 定位 - 百度圖片;

driver.quit()       # 退出程式

 

  5 find_element_by_link_text

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

driver=webdriver.Firefox()            # 啟動瀏覽器 - Firefox
driver.get("https://www.baidu.com") # 訪問url - 百度
time.sleep(1)

# 步驟: 定位 + 操作 + 資料
driver.find_element_by_link_text("學術").click()     # 定位 - 連結; 操作 - 點選;

driver.quit()       # 退出程式

 

  6 find_element_by_partial_link_text

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

driver=webdriver.Firefox()            # 啟動瀏覽器 - Firefox
driver.get("https://www.baidu.com") # 訪問url - 百度
time.sleep(1)

# 步驟: 定位 + 操作 + 資料
driver.find_element_by_partial_link_text("").click()     # 定位 - 連結; 操作 - 點選;

driver.quit()       # 退出程式

 

  7 xpath

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

driver=webdriver.Firefox()            # 啟動瀏覽器 - Firefox
driver.get("https://www.baidu.com") # 訪問url - 百度
time.sleep(1)

# 步驟: 定位 + 操作 + 資料
driver.find_element_by_xpath("/html/body/div/div/div/div/div/form/span/input").send_keys("selenium")
driver.find_element_by_xpath("/html/body/div/div/div/div/div/form/span[2]/input").click()

driver.quit()       # 退出程式

 

  8 css

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

driver = webdriver.Firefox()            # 啟動瀏覽器 - Firefox
driver.get("https://www.baidu.com")     # 訪問url - 百度
time.sleep(1)

# 步驟: 定位 + 操作 + 資料
# 定位(控制元件) + 操作(鍵盤/滑鼠) + 資料
driver.find_element_by_css_selector("#kw").send_keys("汁蟲 部落格園") # 定位 - 百度搜索框; 操作 - 鍵盤輸入; 資料 - 汁蟲 部落格園
driver.find_element_by_css_selector("#su").click()                  # 定位 - 百度按鈕; 操作 - 滑鼠點選; 資料 - 無
time.sleep(3)

driver.quit()       # 退出程式

 

  9 複數

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

driver=webdriver.Firefox()            # 啟動瀏覽器 - Firefox
driver.get("https://www.baidu.com") # 訪問url - 百度
time.sleep(1)

# 步驟: 定位 + 操作 + 資料
elements = driver.find_elements_by_class_name("mnav")[6].click()

driver.quit()       # 退出程式

 


三: 操作物件
  1 常規操作


  2 滑鼠事件
  3 鍵盤事件
四: Error
  1 沒許可權
  2