python自动化selenium封装

python自动化selenium封装,第1张

概述# coding = utf-8from selenium.webdriver.common.action_chains import ActionChainsfrom selenium import webdriverfrom selenium.webdriver.support import expected_conditions as ECimport timeimpor
# Coding = utf-8from selenium.webdriver.common.action_chains import ActionChainsfrom selenium import webdriverfrom selenium.webdriver.support import expected_conditions as ECimport timeimport osfrom selenium.webdriver.support.select import Selectfrom read_init import ReadInifrom selenium.webdriver.common.keys import Keysfrom handle_Json import handle_Json#类使用class SelenimuDriver():    def __init__(self):        self.driver = self.open_browser()    def open_browser(self,browser=Chrome):        try:            if browser == Chrome:                driver = webdriver.Chrome()            elif browser == firefox:                driver = webdriver.firefox()            elif browser == IE:                driver = webdriver.IE()            else:                driver = webdriver.Edge()                time.sleep(1)            return driver        except:            print("open browser fail!")            return None    def get_url(self,url):        if self.driver !=None:            self.driver.maximize_window()            if http:// in url:                self.driver.get(url)            else:                print("Your url have a problem!")        else:            print(can\‘t get browser)        self.driver.quit()    def handle_windows(self,*args):        value = len(args)        if value == 1:            if args[0] == max:                self.driver.maximize_window()            elif args[0] == min:                self.driver.minimize_window()            elif args[0] == back:                self.driver.back()            elif args[0] == go:                self.driver.forward()            elif args[0] == refresh:                self.driver.refresh()            else:                print(don\‘t have this operating)        elif value == 2:           self. driver.set_window_size(args[0],args[1])        else:            print(You Parameters is error!)        time.sleep(4)        self.driver.quit()    def assert_Title(self,Title_name = None):        ‘‘‘        判断Title是否正确        :param Title_name:        :return: get_Title()        ‘‘‘        if Title_name != None:            get_Title = EC.Title_contains(Title_name)            return get_Title(self.driver)    def open_url_is_true(self,url,Title_name = None):        self.get_url(url)        return self.assert_Title(Title_name)    def close_driver(self):        self.driver.close()    def switch_windows(self,Title_name=None):        ‘‘‘        切换windows        :param Title_name:        :return:        ‘‘‘        handle_List = self.driver.window_handles        current_handle = self.driver.current_window_handle        for i in handle_List:            if i != current_handle:                time.sleep(2)                self.driver.switch_to.window(i)                if self.assert_Title(Title_name):                    break        time.sleep(2)        self.driver.find_element_by_ID(userID).send_keys(test)        time.sleep(2)    def element_isdisplay(self,element):        flag = element.is_displayed()        if flag == True:            return element        else:            return False    def get_element(self,info):        ‘‘‘        获取元素element        :param by:        :param value:        :return:        ‘‘‘        try:            by,value = self.get_local_element(username)            element = None            if by == ID:                element = self.driver.find_element_by_ID(value)            elif by == name:                element = self.driver.find_element_by_name(value)            elif by == CSS:                element == self.driver.find_element_by_CSS_selector(value)            elif by == class:                element == self.driver.fing_element_by_class_name(value)            else:                element == self.driver.find_element_by_xpath(value)        except:            print("定位方式:",by,"定位值",value,"定位出现错误,没有定位成功")        return self.element_isdisplay(element)    def elements_isdisplay(self,elements):        flag_List = []        flags = elements.is_displayed()        for flag in flags:            if flag == False:                continue            else:                flag_List.append(flag)        return flag_List    def get_elements(self,info):        ‘‘‘        获取元素element        :param by:        :param value:        :return:        ‘‘‘        try:            elements = None            elements = []            by,value = self.get_local_element(info)            if by == ID:                elements = self.driver.find_elements_by_ID(value)            elif by == name:                elements = self.driver.find_elements_by_name(value)            elif by == CSS:                elements == self.driver.find_elements_by_CSS_selector(value)            elif by == class:                elements == self.driver.fing_elements_by_class_name(value)            else:                elements == self.driver.find_elements_by_xpath(value)        except:            print("定位方式:","定位出现错误,没有定位成功")        return self.elements_isdisplay(elements)    def get_List_element(self,info,index):        elements = self.get_elements(info)        if index > len(elements):            return  None        return elements[index]    def get_level_element(self,info_level,node_info):        ‘‘‘        :param by:        :param value:        :param node_by:        :param node_value:        :return:        ‘‘‘        element = self.get_element(info_level)        node_by,node_value = node_info        if element == False:            return False        if node_by == ID:            node_element = element.find_element_by_ID(node_value)        elif node_by ==name:            node_element = element.find_element_by_name(node_value)        elif node_by ==CSS:            node_element = element.find_element_by_CSS_selector(node_value)        elif node_by ==class:            node_element = element.find_element_by_class_name(node_value)        else:            node_element = element.find_element_by_xpath(node_value)        return self.element_isdisplay(node_element)    def assert_element(self,element):        pass    def send_value(self,key):        ‘‘‘        输入值        ‘‘‘        element = self.get_element(by,value)        if element == False:            print("输入失败,定位元素不可编辑")        else:            if element != None:                element.send_keys(key)            else:                print("输入失败,定位元素没找打")    def click_element(self,info):        ‘‘‘        点击元素        :param by:        :param value:        :return:        ‘‘‘        element = self.get_element(info)        if element != False:            if element != None:                element.click()            else:                print("点击失败,定位元素没有找到")        else:            print("点击失败,元素不可见")    def check_Box_isselected(self,check = None):        element = self.get_element(info)        if element != False:            flag = element.is_selected()            if flag == True:                if check != check:                    self.click_element(info)            else:                if check == check:                    self.click_element(info)        else:            print("元素不可见,没办法选择")    def get_local_element(self,info):        data = ReadIni.get_value(info)        data_info = data.split(>)        # print(data_info)        # by = data_info[0]        # local = data_info[1]        #[name,email]        return data_info    def get_selected(self,value_index,index=None):        ‘‘‘        通过index获取我们seleced,然后选择我们selected        :param info:        :param value_index:        :param index:        :return:        ‘‘‘        selected_element = None        if index != None:            selected_element = self.get_List_element(info,index)        else:            selected_element = self.get_element(info)        Select(selected_element).select_by_index(value_index)    def upload_file(self,file_name):        ‘‘‘        上传文件        :param file_name:        :return:        ‘‘‘        pykey = PyKeyboard()        # pykey.tap_key(pykey.shift_key)        pykey.type_string("D:\download\test.png")        time.sleep(2)        pykey.tap_key(pykey.enter_key)    def upload_file_function(self,file_name):        pass        # 先获取到上传文件的元素标签类型(input file) send_keys上传文件    def calendar(self,value):        ‘‘‘        修改日历        :param info:        :param value:        :return:        ‘‘‘        element = self.get_element(info)        try:            element.get_attribute(Readonly)            self.Js_excute_calendar(info)        except:            print("这个不是只读熟悉的日历")        element.clear()        self.send_value(info.value)    def moveto_element_mouse(self,info):        ‘‘‘        移动鼠标        :param info:        :return:        ‘‘‘        element = self.get_element(info)        ActionChains(self.driver).move_to_element(element).perform()    def refresh_f5(self):        ‘‘‘        强制刷新        ‘‘‘        ActionChains(self.driver).key_down(Keys.CONTRol).send_keys(Keys.F5).key_up(Keys.CONTRol).perform()    def switch_iframe(self,tag=None):        ‘‘‘        切换iframe        :param info:        :param tag:        :return:        ‘‘‘        if info != None:            iframe_element = self.get_element(info)            self.driver.switch_to.frame(iframe_element)        else:            self.driver.switch_to.default_content()    def switch_alert(self,value=None):        ‘‘‘        系统级d窗        :param info: 确认or取消        :param value: 是否需要输入值        :return:        ‘‘‘        windows_alert = self.driver.switch_to.alert        if info == accept:            if value == None:                windows_alert.accept()            else:                windows_alert.send_keys(value)                windows_alert.accept()            windows_alert.accept()        else:            windows_alert.dismiss()    def scroll_get_element(self,List_info,str_info):        t = True        List_element = self.get_elements(List_info)        Js = document.documentElement.scrolltop = 100000;        while t:            for element in List_element:                Title_name = element.find_element_by_tag_name(p).text                if Title_name in str_info:                    element.click()                    t = False            self.driver.execute_script(Js)            time.sleep(3)    def scroll_element(self,info):        Js = document.documentElement.scrolltop = 1000;        t = True        while t:            try:                self.get_element(info)                t = False            except:                self.driver.execute_script(Js)    def get_cookie(self):        cookie = self.driver.get_cookies()        handle_Json.write_data(cookie)    def set_cookie(self):        cookie = handle_Json.get_data()        self.driver.delete_all_cookies()        time.sleep(1)        self.driver.add_cookie(cookie)        time.sleep(2)    def save_png(self):        Now_time = time.strftime(%Y%m%d.%H.%M.%s)        self.driver.get_screenshot_as_file(%s.png %Now_time)if __name__ == __main__:    os.system("taskkill /f /im chromedriver.exe")    selfnium_driver = SelenimuDriver()#*************************测试方法# selfnium_driver.open_browser()# print(selfnium_driver.open_url_is_true(‘http://www.imooc.com‘,‘程序员‘))# time.sleep(30)# selfnium_driver.switch_windows(‘网站连接‘)
总结

以上是内存溢出为你收集整理的python自动化selenium封装全部内容,希望文章能够帮你解决python自动化selenium封装所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1195403.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存