[4]python+selenium - UI自动框架之封装基类BasePage页面

Selenium二次封装

这部分内容是页面上的一些基本操作

from selenium.common.exceptions import TimeoutException, NoSuchElementException, WebDriverException, \
    StaleElementReferenceException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import ActionChains
from common.KeyActions import *
from common.errors import StopTestCaseException, KTEC_WebDriverException
from selenium.webdriver.support.select import Select
from common.elementFinder import ElementFinder
from selenium.webdriver.common.keys import Keys
from common.log import *
import os, win32gui, win32con, time
from common.publicFunc import *

class BasePage(ElementFinder):
    """
    Second encapsulation based on Selenium
    """

    #
    # def __init__(self, driver):
    #     self.driver = drive

    def open(self, url):
        """ Open url, browser maximization"""
        self.driver.get(url)
        self.driver.maximize_window()

    def get_url(self):
        url = self.driver.current_url
        return url

    def open_tap(self, url):
        """open a new browser tap"""
        old_handles = self.get_window_handles()
        simulateKey('ctrl', 't')
        time.sleep(5)
        for _ in range(5):
            if len(self.get_window_handles()) > len(old_handles):
                break
            else:
                time.sleep(2)
        self.switch_to_window(self.get_window_handles()[len(old_handles)])
        self.driver.get(url)

    def close_tap(self):
        """close browser tap"""
        self.driver.close()

    def close_browser(self):
        """close browser"""
        self.driver.quit()

    def go_back(self):
        """go back"""
        self.driver.back()

    def refresh_(self):
        """refresh browser"""
        self.driver.refresh()

    def click(self, locator, isUpdated=False):
        """ click element"""
        # element = self.find_element_clickable(locator)
        element = self.find_element_clickable(locator)
        if not element:
            log.warning('[BS]_436:element{ele} not exist'.format(ele=locator))
            return
        for _ in range(2):
            log.info('[BS]_006:step --> click {ele} time={num}'.format(ele=locator, num=_ + 1))
            try:
                self.click_element(element)
                # if Mode().getBrowserType() is None or (Mode().getBrowserType() is not None and (Mode().getBrowserType()).lower()=='ie'):
                #     self.driver.execute_script("$(arguments[0]).click()", element)
                # else:
                #     self.click_element(element)
                break
            except KTEC_WebDriverException as e:
                log.warning('[BS]_434: click {ele} failed!,{info}'.format(ele=locator, info=e))
                time.sleep(1)
                element = self.find_element_clickable(locator)
            except Exception as e:
                log.warning('[BS]_444:click {ele},unknown error:{error}'.format(ele=locator, error=e))
                raise StopTestCaseException

    def right_click(self, driver, locator, isUpdated=False):
        """ click element"""
        time.sleep(1)
        # element = self.find_element_clickable(locator)
        element = self.find_element_clickable(locator)
        if not element:
            log.warning('[BS]_436:element{ele} not exist'.format(ele=locator))
            return
        for _ in range(2):
            log.info('[BS]_006:step --> click {ele} time={num}'.format(ele=locator, num=_ + 1))
            try:
                ActionChains(driver).context_click(element).perform()
                # if Mode().getBrowserType() is None or (Mode().getBrowserType() is not None and (Mode().getBrowserType()).lower()=='ie'):
                #     self.driver.execute_script("$(arguments[0]).click()", element)
                # else:
                #     self.click_element(element)
                break
            except KTEC_WebDriverException as e:
                log.warning('[BS]_434: click {ele} failed!,{info}'.format(ele=locator, info=e))
                time.sleep(1)
                element = self.find_element_clickable(locator)
            except Exception as e:
                log.warning('[BS]_444:click {ele},unknown error:{error}'.format(ele=locator, error=e))
                raise StopTestCaseException

    def click_element(self, element):
        log.info('[BS]_00601:step --> click_element')
        try:
            element.click()
            time.sleep(1)
        except StaleElementRefe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值