1、為避免代碼冗余,把selenium的部分操作簡單的封裝起來,封裝起來后,一些需要幾步才能完成的動作只需要一步即可
瀏覽器的開啟關閉封裝
訪問地址(訪問后默認隱式等待)封裝
定位方式的封裝
單擊操作封裝
輸入框輸入封裝
獲取指定元素的文本內容封裝
from selenium import webdriver import time # 定義一個封裝selenium 的各種方法的類(方便以面向對象的方式寫腳本) class My_se_package(object): # 構造方法 def __init__(self,brower): '''初始化瀏覽器對象''' # 根據傳入的參數創建對應的瀏覽器對象(相關瀏覽器已正確安裝驅動) if brower == 'Firefox': # 創建瀏覽器 self.driver = webdriver.Firefox() elif brower == 'Chrome': self.driver = webdriver.Chrome() # 默認最大化 self.driver.maximize_window() # 訪問地址 def open_url(self,url): # 訪問url self.driver.get(url) # 默認隱式等待10 self.driver.implicitly_wait(10) # 封裝八種定位方式 def element_location(self,locate_type,locate_value): el = None if locate_type == 'id': el = self.driver.find_element_by_id(locate_value) elif locate_type == 'name': el = self.driver.find_element_by_name(locate_value) elif locate_type == 'class_name': el = self.driver.find_element_by_class_name(locate_value) elif locate_type == 'tag_name': el = self.driver.find_element_by_tag_name(locate_value) elif locate_type == 'link_text': el = self.driver.find_element_by_link_text(locate_value) elif locate_type == 'partial_link_text': el = self.driver.find_element_by_partial_link_text(locate_value) elif locate_type == 'xpath': el = self.driver.find_element_by_xpath(locate_value) elif locate_type == 'css': el = self.driver.find_element_by_css_selector(locate_value) # 如果el不為None,則返回 if el is not None: return el # 指定某一個元素進行點擊操作 def click_element(self,locate_type,locate_value): # 調用定位方法,定位指定的元素 el = self.element_location(locate_type,locate_value) # 點擊操作 el.click() time.sleep(1) # 指定元素進行輸入 def input_element(self,locate_type,locate_value,input_value): # 調用定位方法,指定元素進行定位 el = self.element_location(locate_type,locate_value) # 輸入操作 el.send_keys(input_value) time.sleep(1) # 獲取指定元素的文本內容 def text_element(self,locate_type,locate_value): # 調用定位方法定位指定元素 el = self.element_location(locate_type,locate_value) # 獲取文本內容 return el.text # 關閉本腳本打開的窗口 def close_brower(self): # 關閉所有本腳本打開的窗口 self.driver.quit() # 結束時自動清理所有變量,關閉所有窗口 def __del__(self): # 關閉瀏覽器 time.sleep(2) self.driver.quit() if __name__ == '__main__': b = My_se_package('Firefox') b.open_url('http://www.baidu.com') # b.open_url('https://www.jd.com/') b.input_element('id','kw','英雄') b.click_element('id','su') b.driver.back() print(b.text_element('css','li.hotsearch-item:nth-child(2) > a:nth-child(1) > span:nth-child(2)')) print(b.driver.get_window_size())