设为首页 加入收藏

TOP

自动化测试框架中关于selenium api的二次封装(一)
2017-10-09 16:54:53 】 浏览:4338
Tags:自动化 测试 框架 关于 selenium api 封装

不多说,直接看代码如下:

#coding:utf-8
from selenium import  webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities



class webutils():

    def __init__(self, browser='firefox'):
        '''
        :param browser:   浏览器对象
        :return:
        '''
        if browser == "firefox" :
            driver = webdriver.Firefox()
        elif browser == "chrome":
            driver = webdriver.Chrome()
        elif browser == "ie" :
            DesiredCapabilities.INTERNETEXPLORER['ignoreProtectedModeSettings'] = True
            driver = webdriver.Ie("../resources/drivers/IEDriverServer.exe")
        elif browser == "phantomjs":
            driver = webdriver.PhantomJS()
        try:
            self.driver = driver
        except Exception:
            raise NameError("Not found this browser,You can enter 'firefox', 'chrome', 'ie' or 'phantomjs'.")



    def getElement(self,by,value):
        '''

        :param by:     查找元素的方式
        :param value:  文本值
        :return:       查找到的元素
        '''
        if by=="id":
            return self.driver.find_element_by_id(value)
        elif by=="class":
            return self.driver.find_element_by_class_name(value)
        elif by=="name":
            return self.driver.find_element_by_name(value)
        elif by=="css":
            return self.driver.find_element_by_css_selector(value)
        elif by=="linktext":
            return self.driver.find_element_by_link_text(value)
        elif by=="partcialtext":
            return self.driver.find_element_by_partial_link_text(value)
        elif by=="tag":
            return self.driver.find_element_by_tag_name(value)
        elif by=='xpath':
            return self.driver.find_element_by_xpath(value)
        elif by=='js'or by=="jquery":
            return self.ExcuteJs(value)
        else:
            print "请输入适合的查找元素方式。。。"

    def ExcuteJs(self,js):
        '''

        :param js:  js查找元素方式,或jQuery
        :return:    找到元素
        '''
        self.driver.execute_script(js)
    def SetTextBox(self,text,by,value):
        '''
        :param text:     设置文本框的值
        :param by:       查找元素的方式
        :param value:    文本值
        :return:
        '''
        elemet=getElement(by,value)
        self.driver.execute_script("arguments[0].innerHTML = \"" + text + "\"",elment)

    def getTextBox(self,by,value):
        '''
        :param by:       查找元素的方式
        :param value:    文本值
        :return:         返回富文本框的值
        '''
        elment=getElement(by,value)
        return self.driver.execute_script("arguments[0].innerHTML()",elment)

    def InputByJs(self,by,value):
        '''
        :param by:     查找元素的方式
        :param value:  文本值
        :return:
        '''
        elment=getElement(by,value)
        self.driver.execute_script("arguments[0].value=\""+values+"\"",elment)

    def scrollToElement(self,by,value):
        '''
        :param by:     查找元素的方式
        :param value:  文本值
        :return:
        '''
        elment=getElement(by,value)
        self.driver.execute_script("arguments[0].scrollIntoViewIfNeeded(true);",elment)

    def SwitchWindow_Two(self):
        '''
        适用于两个窗口的切换
        :return:
        '''
        CurrentHandle=self.driver.current_window_handle
        handles=self.driver.window_handles
        for handle in  handles:
            if handle==CurrentHandle:
                continue
            else:
                self.driver._switch_to.window(handle)

    def SwitchWindow_By_Tltle(self,Title):
        '''
        :param Title: 浏览器窗口标题
        :return:
        '''
        flag=False
        CurrentHandle=self.driver.current_window_handle
        handles=self.driver.window_handles
        for handle in  handles:
            if handle==CurrentHandle:
                continue
            else:
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇关于set集合的介绍和操作 下一篇安装python2.7.13-64bit & Pychar..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目