python+selenium之封裝元素的方法(封裝查詢元素的方法)
阿新 • • 發佈:2019-01-02
import os import sys import time import unittest from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import Select fromCommon.readdata import ReadData as R ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir)) sys.path.append(ROOT_DIR) class WebTools(object): def __init__(self): self.browser_type = None # 跳轉頁面 def Jumpwebpage(self, page, time_wait=3): self.driver.get(self.Getwebpage(page)) self.driver.maximize_window() if isinstance(time_wait, int): time.sleep(time_wait) def Getwebpage(self, page): return R.ReadXmlData("%s.xml" % page, "page", 0, "url") # 瀏覽器前進操作 def forward(self): self.driver.forward() # 瀏覽器後退操作def back(self): self.driver.back() # 隱式等待 def wait(self, seconds): self.driver.implicitly_wait(seconds) # 儲存圖片 def get_windows_img(self): """ 在這裡我們把file_path這個引數寫死,直接儲存到我們專案根目錄的一個資料夾.\Screenshots下 """ file_path = os.path.dirname(os.path.abspath('.')) + '/screenshots/' rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time())) screen_name = file_path + rq + '.png' try: self.driver.get_screenshot_as_file(screen_name) except NameError as e: self.get_windows_img() def Current_handel(self): # 這時切換到新視窗 all_handles = self.driver.window_handles for handle in all_handles: self.driver.switch_to.window(handle) # 開啟瀏覽器的方法 def Openbrowser(self): if self.browser_type == 'Firefox': self.driver = webdriver.Firefox() elif self.browser_type == 'Chrome': self.driver = webdriver.Chrome() elif self.browser_type == 'IE': self.driver = webdriver.Ie() elif self.browser_type == '': self.driver = webdriver.Chrome() self.driver.maximize_window() # 輸入內容方法 def Input(self, type, value, inputvalue): if type == "xpath": self.driver.find_element_by_xpath(value).send_keys(inputvalue) elif type == "class_name": self.driver.find_element_by_class_name(value).send_keys(inputvalue) elif type == "id": self.driver.find_element_by_id(value).send_keys(inputvalue) elif type == "name": self.driver.find_element_by_name(value).send_keys(inputvalue) elif type == "link_text": self.driver.find_element_by_link_text(value).send_keys(inputvalue) elif type == "partial_link_text": self.driver.find_element_by_partial_link_text(value).send_keys(inputvalue) # 滑鼠事件方法一 def Click(self, type, value): if type == "xpath": self.driver.find_element_by_xpath(value).click() elif type == "class_name": self.driver.find_element_by_class_name(value).click() elif type == "id": self.driver.find_element_by_id(value).click() elif type == "name": self.driver.find_element_by_name(value).click() elif type == "link_text": self.driver.find_element_by_link_text(value).click() elif type == "partial_link_text": self.driver.find_element_by_partial_link_text(value).click() # 滑鼠事件方法二 def Clear(self, type, value): if type == "xpath": self.driver.find_element_by_xpath(value).clear() elif type == "id": self.driver.find_element_by_id(value).clear() elif type == "name": self.driver.find_element_by_name(value).clear() elif type == "link_text": self.driver.find_element_by_link_text(value).clear() elif type == "partial_link_text": self.driver.find_element_by_partial_link_text(value).clear() # 驗證元素是否存在 def Check_element(self, type, value): if type == "xpath": self.driver.find_element_by_xpath(value) elif type == "id": self.driver.find_element_by_id(value) elif type == "name": self.driver.find_element_by_name(value) elif type == "link_text": self.driver.find_element_by_link_text(value) elif type == "partial_link_text": self.driver.find_element_by_partial_link_text(value) # 獲取子元素 def Select_child_elements(self, type, value1, value2): if type == "xpath": Select(self.driver.find_element_by_xpath(value1)).select_by_visible_text(value2) elif type == "id": Select(self.driver.find_element_by_id(value1)).select_by_visible_text(value2) elif type == "name": Select(self.driver.find_element_by_name(value1)).select_by_visible_text(value2) elif type == "link_text": Select(self.driver.find_element_by_link_text(value1)).select_by_visible_text(value2) elif type == "partial_link_text": Select(self.driver.find_element_by_partial_link_text(value1)).select_by_visible_text(value2) # 獲取輸入框的值 def Get_attribute(self, type, value1, value2): if type == "xpath": Value = self.driver.find_element_by_xpath(value1).get_attribute(value2) return Value elif type == "name": Value = self.driver.find_element_by_name(value1).get_attribute(value2) return Value elif type == "link_text": Value = self.driver.find_element_by_link_text(value1).get_attribute(value2) return Value elif type == "class_name": Value = self.driver.find_element_by_class_name(value1).get_attribute(value2) return Value elif type == "id": Value = self.driver.find_element_by_id(value1).get_attribute(value2) return Value # 獲取下拉框的文字的值 def Get_text(self, type, value): if type == "xpath": text = self.driver.find_element_by_xpath(value).text return text elif type == "name": text = self.driver.find_element_by_name(value).text return text elif type == "link_text": text = self.driver.find_element_by_link_text(value).text return text elif type == "class_name": text = self.driver.find_element_by_class_name(value).text return text elif type == "id": text = self.driver.find_element_by_id(value).text return text # 顯性等待時間 def WebDriverWait(self, MaxTime, Mimtime, value): element = self.driver.find_element(By.ID, value) WebDriverWait(self.driver, MaxTime, Mimtime).until(EC.presence_of_element_located(element)) # # 滑鼠移動點選機制 def Move_action(self, type, value): if type == "xpath": xm = self.driver.find_element_by_xpath(value) webdriver.ActionChains(self.driver).click(xm).perform() elif type == "id": xm = self.driver.find_element_by_id(value) webdriver.ActionChains(self.driver).click(xm).perform() elif type == "name": xm = self.driver.find_element_by_name(value) webdriver.ActionChains(self.driver).click(xm).perform() elif type == "link_text": xm = self.driver.find_element_by_link_text(value) webdriver.ActionChains(self.driver).click(xm).perform() # 校驗按鈕是否為選中狀態 def Is_selected(self, type, value): if type == "id": self.driver.find_element_by_id(value).is_selected() elif type == "xpath": self.driver.find_element_by_xpath(value).is_selected() elif type == "class_name": self.driver.find_element_by_class_name(value).is_selected() elif type == "name": self.driver.find_element_by_name(value).is_selected() elif type == "link_text":
self.driver.find_element_by_link_text(value).is_selected()
import os
import sys
import time
import unittest
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from Common.readdata import ReadData as R
ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
sys.path.append(ROOT_DIR)
class WebTools(object):
def __init__(self):
self.browser_type = None
# 跳轉頁面
def Jumpwebpage(self, page, time_wait=3):
self.driver.get(self.Getwebpage(page))
self.driver.maximize_window()
if isinstance(time_wait, int):
time.sleep(time_wait)
def Getwebpage(self, page):
return R.ReadXmlData("%s.xml" % page, "page", 0, "url")
# 瀏覽器前進操作
def forward(self):
self.driver.forward()
# 瀏覽器後退操作
def back(self):
self.driver.back()
# 隱式等待
def wait(self, seconds):
self.driver.implicitly_wait(seconds)
# 儲存圖片
def get_windows_img(self):
"""
在這裡我們把file_path這個引數寫死,直接儲存到我們專案根目錄的一個資料夾.\Screenshots下
"""
file_path = os.path.dirname(os.path.abspath('.')) + '/screenshots/'
rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
screen_name = file_path + rq + '.png'
try:
self.driver.get_screenshot_as_file(screen_name)
except NameError as e:
self.get_windows_img()
def Current_handel(self):
# 這時切換到新視窗
all_handles = self.driver.window_handles
for handle in all_handles:
self.driver.switch_to.window(handle)
# 開啟瀏覽器的方法
def Openbrowser(self):
if self.browser_type == 'Firefox':
self.driver = webdriver.Firefox()
elif self.browser_type == 'Chrome':
self.driver = webdriver.Chrome()
elif self.browser_type == 'IE':
self.driver = webdriver.Ie()
elif self.browser_type == '':
self.driver = webdriver.Chrome()
self.driver.maximize_window()
# 輸入內容方法
def Input(self, type, value, inputvalue):
if type == "xpath":
self.driver.find_element_by_xpath(value).send_keys(inputvalue)
elif type == "class_name":
self.driver.find_element_by_class_name(value).send_keys(inputvalue)
elif type == "id":
self.driver.find_element_by_id(value).send_keys(inputvalue)
elif type == "name":
self.driver.find_element_by_name(value).send_keys(inputvalue)
elif type == "link_text":
self.driver.find_element_by_link_text(value).send_keys(inputvalue)
elif type == "partial_link_text":
self.driver.find_element_by_partial_link_text(value).send_keys(inputvalue)
# 滑鼠事件方法一
def Click(self, type, value):
if type == "xpath":
self.driver.find_element_by_xpath(value).click()
elif type == "class_name":
self.driver.find_element_by_class_name(value).click()
elif type == "id":
self.driver.find_element_by_id(value).click()
elif type == "name":
self.driver.find_element_by_name(value).click()
elif type == "link_text":
self.driver.find_element_by_link_text(value).click()
elif type == "partial_link_text":
self.driver.find_element_by_partial_link_text(value).click()
# 滑鼠事件方法二
def Clear(self, type, value):
if type == "xpath":
self.driver.find_element_by_xpath(value).clear()
elif type == "id":
self.driver.find_element_by_id(value).clear()
elif type == "name":
self.driver.find_element_by_name(value).clear()
elif type == "link_text":
self.driver.find_element_by_link_text(value).clear()
elif type == "partial_link_text":
self.driver.find_element_by_partial_link_text(value).clear()
# 驗證元素是否存在
def Check_element(self, type, value):
if type == "xpath":
self.driver.find_element_by_xpath(value)
elif type == "id":
self.driver.find_element_by_id(value)
elif type == "name":
self.driver.find_element_by_name(value)
elif type == "link_text":
self.driver.find_element_by_link_text(value)
elif type == "partial_link_text":
self.driver.find_element_by_partial_link_text(value)
# 獲取子元素
def Select_child_elements(self, type, value1, value2):
if type == "xpath":
Select(self.driver.find_element_by_xpath(value1)).select_by_visible_text(value2)
elif type == "id":
Select(self.driver.find_element_by_id(value1)).select_by_visible_text(value2)
elif type == "name":
Select(self.driver.find_element_by_name(value1)).select_by_visible_text(value2)
elif type == "link_text":
Select(self.driver.find_element_by_link_text(value1)).select_by_visible_text(value2)
elif type == "partial_link_text":
Select(self.driver.find_element_by_partial_link_text(value1)).select_by_visible_text(value2)
# 獲取輸入框的值
def Get_attribute(self, type, value1, value2):
if type == "xpath":
Value = self.driver.find_element_by_xpath(value1).get_attribute(value2)
return Value
elif type == "name":
Value = self.driver.find_element_by_name(value1).get_attribute(value2)
return Value
elif type == "link_text":
Value = self.driver.find_element_by_link_text(value1).get_attribute(value2)
return Value
elif type == "class_name":
Value = self.driver.find_element_by_class_name(value1).get_attribute(value2)
return Value
elif type == "id":
Value = self.driver.find_element_by_id(value1).get_attribute(value2)
return Value
# 獲取下拉框的文字的值
def Get_text(self, type, value):
if type == "xpath":
text = self.driver.find_element_by_xpath(value).text
return text
elif type == "name":
text = self.driver.find_element_by_name(value).text
return text
elif type == "link_text":
text = self.driver.find_element_by_link_text(value).text
return text
elif type == "class_name":
text = self.driver.find_element_by_class_name(value).text
return text
elif type == "id":
text = self.driver.find_element_by_id(value).text
return text
# 顯性等待時間
def WebDriverWait(self, MaxTime, Mimtime, value):
element = self.driver.find_element(By.ID, value)
WebDriverWait(self.driver, MaxTime, Mimtime).until(EC.presence_of_element_located(element))
# # 滑鼠移動點選機制
def Move_action(self, type, value):
if type == "xpath":
xm = self.driver.find_element_by_xpath(value)
webdriver.ActionChains(self.driver).click(xm).perform()
elif type == "id":
xm = self.driver.find_element_by_id(value)
webdriver.ActionChains(self.driver).click(xm).perform()
elif type == "name":
xm = self.driver.find_element_by_name(value)
webdriver.ActionChains(self.driver).click(xm).perform()
elif type == "link_text":
xm = self.driver.find_element_by_link_text(value)
webdriver.ActionChains(self.driver).click(xm).perform()
# 校驗按鈕是否為選中狀態
def Is_selected(self, type, value):
if type == "id":
self.driver.find_element_by_id(value).is_selected()
elif type == "xpath":
self.driver.find_element_by_xpath(value).is_selected()
elif type == "class_name":
self.driver.find_element_by_class_name(value).is_selected()
elif type == "name":
self.driver.find_element_by_name(value).is_selected()
elif type == "link_text":
self.driver.find_element_by_link_text(value).is_selected()