1. 程式人生 > >python+selenium之封裝元素的方法(封裝查詢元素的方法)

python+selenium之封裝元素的方法(封裝查詢元素的方法)

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()

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()