zoukankan      html  css  js  c++  java
  • selenium模块---操作浏览器

    前言:selenium模块是用来做UI自动化,模拟浏览器操作

    1、安装:

    终端安装:pip install selenium

    编译器安装:File->Settings->Project:文件名称->Project lnterpreter

    2、导入模块:

    from selenium import webdriver

    3、操作浏览器

    from Common.read_ini import ReaDconfigurationFile
    from selenium.webdriver.common.action_chains import ActionChains
    import time
    from PIL import Image
    from selenium import webdriver
    import time
    import os
    
    class FindElement():
        def __init__(self):
            self.read = ReaDconfigurationFile()
    
            # if bdriver == 'chrome':
            #     self.driver = webdriver.Chrome()
            # if bdriver == 'firefox':
            #     self.driver = webdriver.Firefox()
            # if bdriver =='ie':
            #     self.driver =  webdriver.Ie()
            # return None
        # 打开浏览器
        def get_bdriwer(self,bdriver):
            if bdriver == 'chrome':
                self.driver = webdriver.Chrome()
            if bdriver == 'firefox':
                self.driver = webdriver.Firefox()
            if bdriver =='ie':
                self.driver =  webdriver.Ie()
            return None
    
        #进入指定的url
        def get_to_url(self,url):
            self.driver.get(url)
    
        #验证元素是否存在
        def get_element(self,keys):
            data = self.read.obtain_ini_value(keys)
            by = data.split(':')[0]
            key = data.split(":")[1]
            try:
                if by=='id':
                    return self.driver.find_element_by_id(key)
                elif by=='name':
                    return self.driver.find_element_by_name(key)
                elif by=='class_name':
                    return self.driver.find_element_by_class_name(key)
                elif by=='link_text':
                    return self.driver.find_element_by_link_text(key)
                elif by=='partial_link_text':
                    return self.driver.find_element_by_partial_link_text(key)
                elif by=='xpath':
                    return self.driver.find_element_by_xpath(key)
                elif by=='css_selector':
                    return self.driver.find_element_by_css_selector(key)
            except:
                return None
    
        #输入事件
        def input_event(self,key,content,):
            return self.get_element(key).send_keys(content)
    
        # #点击事件
        def click_event(self,keys):
            return self.get_element(keys).click()
    
        #获取文字信息
        def text_info(self,keys,keyss):
            return self.get_element(keys).get_attribute(keyss)
    
        #获取浏览器title
        def get_title_text(self):
            return self.driver.title
    
        #清除输入框内容
        def clear_content(self,keys):
            return self.get_element(keys).clear()
    
        #获得下来框文本的值
        def get_text(self,keys):
            return self.get_element(keys).text
    
        # #鼠标移动到某个元素上面
        def mobile_mouse(self,keys):
            Action = ActionChains(self.driver)
            move_mouse = self.get_element(keys)
            return Action.move_to_element(move_mouse)
    
        #拖拽
        def drag_and_drop(self,keys,keyss):
            Action = ActionChains(self.driver)
            element = self.get_element(keys)
            aims = self.get_element(keyss)
            return Action.drag_and_drop(element,aims).perform()
            #self.Action.click_and_hold(element).move_to_element(aims).perform()
    
        #浏览器前进操作
        def webdriver_go_ahead(self):
            return self.driver.forward()
    
        #浏览器后退操作
        def webdriver_back(self):
            return self.driver.back()
    
        #切换到系统弹框
        #点击确认按钮
        def switch_to_confirm(self):
            return self.driver.switch_to_alert().accept()
    
        # 切换到系统弹框
        # 点击确认按钮
        def switch_to_cancel(self):
            return self.driver.switch_to_alert().dismiss()
    
        # 切换到系统弹框
        # 点击输入文本内容
        def switch_to_input(self,content):
            return self.driver.switch_to_alert().send_keys(content)
    
        #切换到系统弹窗
        #获取文本内容
        def pop_text_info(self):
            return self.driver.switch_to_alert().text
    
        #关闭浏览器
        def close_driver(self):
            return self.driver.close()
    
        #截图保存图片
        def screenshot(self,file_name):
            file = file_name
            return self.driver.save_screenshot(file)
    
        #裁剪验证码图片
        def crop_Image(self,file_name,keys):
            #保存图片
            self.screenshot(file_name)
            #定位到图片位置
            images = self.get_element(keys)
            #定位四个点
            left = images.location['x']  #
            top = images.location['y']  #
            right = images.size['width'] + left  #
            height = images.size['height'] + top  #
            #打开图片
            im = Image.open(file_name)
            #裁剪图片
            img = im.crop(left,top,right,height)
            #保存图片
            img.save(file_name)
    
        #获取页面所有的handle
        def extract_handle(self):
            return self.driver.window_handles()
    
        #进入指定的handle页面
        def get_to_page(self,key):
            return self.driver.switch_to_window(key)
    
        #等待时间
        def wait_time(self,second):
            return time.sleep(second)
    
    
    if __name__ == '__main__':
        fe = FindElement('chrome')
        fe.get_to_url(
            'https://passport.58.com/login/?path=https%3A//wh.58.com/%3Futm_source%3Dmarket%26spm%3Du-2d2yxv86y3v43nkddh1.BDPCPZ_BT&PGTID=0d100000-0009-e0b9-7ab5-9885257cdd77&ClickID=2'
            )
        fe.click_event('error_message')
        time.sleep(3)
        fe.input_event('username','123456')
  • 相关阅读:
    【原创】开源Math.NET基础数学类库使用(01)综合介绍
    【原创】开源.NET排列组合组件KwCombinatorics使用(三)——笛卡尔积组合
    【原创】开源.NET排列组合组件KwCombinatorics使用(二)——排列生成
    apply,call,bind的区别
    javascript替换手机号中间4位
    css常见的概念
    关于URL编码/javascript/js url 编码
    jquery判断div滚动条到底部
    javascript中的array对象属性及方法
    localStorage和sessionStorage区别
  • 原文地址:https://www.cnblogs.com/zihkj/p/12161815.html
Copyright © 2011-2022 走看看