selenium13_二次封装

复制代码
class Base():
    def __init__(self,driver):
        self.driver = driver
        self.timeout = 10
        self.t = 0.5

    #查找元素的另一种方法:
    def findElementNew(self, locator):
        #定位到元素,返回元素对象,没有定位到返回timeout异常
        ele = WebDriverWait(self.driver,self.timeout,self.t).until(EC.presence_of_element_located(locator))    #  *locator取变量locator的值,locator的值的类型是元祖
        return ele

    #封装定位方法,加等待,用10s的时间去查找元素,间隔查找时间05s
    def findElenment(self, locator):   #locator变量是定位器,给的值比如id和value,等同于:查找元素通过id的值value   findElement(By.ID, "tests")
        ele = WebDriverWait(self.driver,self.timeout,self.t).until(lambda x: x.find_element(*locator))    #  *locator取变量locator的值,locator的值的类型是元祖
        return ele

    def findElements(self, locator):   #locator变量是定位器,给的值比如id和value,等同于:查找元素通过id的值value   findElement(By.ID, "tests")
        try:
            eles = WebDriverWait(self.driver,self.timeout,self.t).until(lambda x: x.find_elements(*locator))    #  *locator取变量locator的值,locator的值的类型是元祖
            return eles
        except:
            return []

    #封装sendKeys方法
    def sendKeys(self,locator, text):
        ele = self.findElenment(locator)   #通过locator(例如id和value)定位到元素
        ele.send_keys(text)   #传值

    #封装click方法
    def click(self, locator):
        ele = self.findElenment(locator)  #通过locator(例如id和value)定位到元素
        ele.click()  #点击

    def click_by_index(self, locator, index):
        ele = self.findElements(locator)[index]
        ele.click()

    def clear(self, locator):  #清除方法
        ele = self.findElenment(locator)
        ele.clear()

    def isSelected(self, locator):  #判断元素被选中
        ele = self.findElenment(locator)
        sele = ele.is_selected()
        return sele

    def isElementExist(self, locator):  #判断元素是否存在
        try:
            ele = self.findElenment(locator)
            return True
        except:
            return False

    def isElementExist2(self, locator):  #判断元素是否存在
        eles = self.findElements(locator)
        n = len(eles)
        if n == 0:
            return False
        elif n == 1:
            return True
        else:
            print("定位到 %s 个元素" %n)
            return True

    def isTitle(self, _title):
        '''返回bool值'''
        try:
            result = WebDriverWait(self.driver,self.timeout,self.t).until(EC.title_is(_title))
            return result
        except:
            # print("实际title:", self.driver.title)
            return False

    def isTitleContains(self, _title):
        '''返回bool值'''
        result = WebDriverWait(self.driver,self.timeout,self.t).until(EC.title_contains(_title))
        return result

    def textToBePresentInElement(self, locator, _text):
        '''返回bool值'''
        try:
            result = WebDriverWait(self.driver,self.timeout,self.t).until(EC.text_to_be_present_in_element(locator, _text))
            return result
        except:
            return False

    def textToBePresentInElementValue(self, locator, _value):
        try:
            result = WebDriverWait(self.driver,self.timeout,self.t).until(EC.text_to_be_present_in_element_value(locator, _value))
            return result
        except:
            return False

    def alertIsPresent(self):   #存在alert返回元素对象
        try:
            result = WebDriverWait(self.driver,self.timeout,self.t).until(EC.alert_is_present())
            return result
        except:
            return False

    def getText(self, locator):
        try:
            text = self.findElenment(locator).text
            return text
        except:
            return ""

    def move_mouse_to(self, locator):
        '''封装鼠标悬停方法'''
        ele = self.findElenment(locator)
        ActionChains(self.driver).move_to_element(ele).perform()

    def select_by_index(self, locator, index=0):
        ele = self.findElenment(locator)
        Select(ele).select_by_index(index)

    def select_by_value(self, locator, value):
        ele = self.findElenment(locator)
        Select(ele).select_by_value(value)

    def select_by_text(self, locator, text):
        ele = self.findElenment(locator)
        Select(ele).select_by_visible_text(text)

    def js_scroll_end(self):
        '''滚动到底部'''
        js_heig = "window.scrollTo(0, document.body.scrollHeight)"
        self.driver.execute_script(js_heig)

    def js_scroll_top(self):
        '''滚动到顶部'''
        js = "window.scrollTo(0, 0)"
        self.driver.execute_script(js)

    def js_focus(self, locator):
        '''聚焦元素'''
        target = self.findElenment(locator)
        self.driver.execute_script("arguments[0].scrollIntoView();", target)

posted on 2024-07-04 13:08  水晶的晶  阅读(4)  评论(0编辑  收藏  举报