• selenium+python自动化测试--参数化上传文件


    前言:这个是在悠悠博客中学到的方法,本来不打算记录的,但是由于编码时很粗心,报错解决了一个多小时,所以还是记录下,以便记忆更深刻。

    适用场合:非input文件上传

     

    1、环境准备

     在官网上下载autoit工具并安装(根据引导安装即可),下载地址: https://www.autoitscript.com/site/autoit/downloads/

    2、在开始菜单中查看安装成功后的文件

    3、AutoIt里面几个菜单功能介绍:

    • SciTE Script Editor 编辑器,在这里编写AutoIt脚本
    • AutoIt Windows Info 元素定位器,用于识Windows控件信息
    • Run Script 执行AutoIt脚本
    • Compile Script to.exe 将AutoIt生成 .exe 可执行文件

     4、定位本地文件所在位置

    操作步骤:

    (1)点击上传按钮

    (2)进入要上传文件所在的位置

    (3)在开始中打开AutoIt Windows Info 工具

    (4)拖动Finder Tool 至本地弹框的文件名输入框中,AutoIt Windows Info中显示如下图:

    (5)拖动Finder Tool 至本地弹框的打开按钮上,AutoIt Windows Info中显示如下图:

    5、在开始中打开 SciTE Script Editor编辑器,编写执行脚本

    autoit几个常用的语法:

    • WinActivate("title") 聚焦到指定活动窗口
    • ControlFocus ( "title", "窗口文本", controlID) 设置输入焦点到指定窗口的某个控件上;
    • WinWait ( "title" , "窗口文本" , 超时时间 ) 暂停脚本的执行直至指定窗口存在(出现)为止;
    • ControlSetText ( "title", "窗口文本", controlID, "新文本" ) 修改指定控件的文本;
    • Sleep ( 延迟 ) 使脚本暂停指定时间,单位是毫秒;
    • ControlClick ( "title", "窗口文本", 控件ID , 按钮 , 点击次数 ) 向指定控件发送鼠标点击命令;

    命令行参数:

    • $CmdLine[0] 获取的是命令行参数的总数
    • $CmdLine[1]~$CmdLine[63] 获取的是命令行参数第1到第63位,这个方式最多只能获取63个参数,不过正常情况下是足够用的
    • $CmdLineRaw 获取的是未拆分的所有参数,是一个长字符串,这种情况下不局限与63个参数

     

    注意:编写执行脚本时一定带上instance这个参数,否则无法跳到要上传的文件路径!!!

    将以上编写好的执行脚本另存为   .au3 结尾的文件

    6、将执行脚本转换为  .exe结尾的文件

    在开始菜单中打开  这个工具,选择执行脚本和exe文件保存路径,点击“convert”按钮即可

     

     下图为生成的 .exe 文件

      + R  快捷键打开cmd命令窗口,拖入刚转化的exe文件及要上传的文件路径(两个路径间有个空格),回车,如下图则执行成功

    7、代码编写

    from selenium import webdriver
    from common.base import Base
    import time
    import os
    
    base_url = "url地址"
    
    class ImportRisk(Base):
    
        def importRisk(self):
            '''风险模板导入'''
            node = ("css selector", ".bp3-tree-node-content.bp3-tree-node-content-0.sc-eNQAEJ.geXpPO")
            self.move_to_element(node)
            # 鼠标右键
            self.move_context_click(node)
            # 选择导入
            menu = ("css selector",".bp3-menu>li:nth-child(1)")
            self.click(menu)
            #点击上传按钮
            upfile = ("css selector",".bp3-file-upload-input.bp3-file-upload-input-custom-text")
            self.click(upfile)
            time.sleep(2)
            #上传文件
            file_path = "D:EprosliteUIcommon风险模板.xls"
            os.system(r"D:EprosliteUIcommonupfile.exe %s" %file_path )
            time.sleep(5)
            #点击导入
            submit = ("name","Submit")
            self.click(submit)
    
    if __name__ == '__main__':
        driver = webdriver.Chrome()
        driver.get(base_url)
        driver.maximize_window()
        time.sleep(2)
        risk = ImportRisk(driver)
        risk.importRisk()
    
        time.sleep(2)
        driver.quit()

    附:文章参考及批量上传地址:https://www.cnblogs.com/yoyoketang/p/7653221.html

     

  • 相关阅读:
    进程池和线程池
    TCP并发、GIL、锁
    进程间通信
    装饰器与反射
    装饰器大全
    面向对象三大特征: 封装 继承 多态
    面向对象 魔术方法
    魔术方法
    ubuntu 中导 tarfile,win 不亲切
    os VS shutil
  • 原文地址:https://www.cnblogs.com/yudx/p/11359340.html
Copyright © 2020-2023  润新知