51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2139|回复: 14

Selenium文件上传使用AutoIt3工具获取不到文件名称

[复制链接]

该用户从未签到

发表于 2019-7-11 10:39:45 | 显示全部楼层 |阅读模式
大家好,我这是一个input框,但是类型是text的,利用AutoIt3工具执行上传操作,单独在AutoIt3中执行是可以的,但是python调用之后,input框里始终加载不出来文件名称,请问是怎么回事呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复

使用道具 举报

  • TA的每日心情
    慵懒
    23 分钟前
  • 签到天数: 1381 天

    连续签到: 5 天

    [LV.10]测试总司令

    发表于 2019-7-11 11:22:52 | 显示全部楼层
    看下脚本吧
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    1 小时前
  • 签到天数: 1662 天

    连续签到: 5 天

    [LV.Master]测试大本营

    发表于 2019-7-11 13:56:23 | 显示全部楼层
    把信息在补充全一点吧,现在不知道是哪里出了问题
    回复 支持 反对

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2019-7-11 16:19:53 | 显示全部楼层

    AutoIt3脚本:
    ControlFocus("打开","","Edit1")
    WinWait("[CLASS:#32770]","",10)
    ControlSetText("打开","","Edit1","C:\Users\dz\PycharmProjects\TestPE\Test_PE\data\高铁天窗日计划导入模板.xls")
    Sleep(2000)
    ControlClick("打开","","Button1");
    调用脚本: # os.system(r"C:\Users\dz\PycharmProjects\TestPE\Test_PE\data\otherTest.exe")               
    回复 支持 反对

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2019-7-11 16:21:59 | 显示全部楼层
    海海豚 发表于 2019-7-11 13:56
    把信息在补充全一点吧,现在不知道是哪里出了问题

    <input type="text" class="mini-buttonedit-input" autocomplete="off" placeholder="" readonly="" id="uploadfile$text">

    工具脚本:
    ControlFocus("打开","","Edit1")
    WinWait("[CLASS:#32770]","",10)
    ControlSetText("打开","","Edit1","C:\Users\dz\PycharmProjects\TestPE\Test_PE\data\高铁天窗日计划导入模板.xls")
    Sleep(2000)
    ControlClick("打开","","Button1");

    调用脚本:
    # os.system(r"C:\Users\dz\PycharmProjects\TestPE\Test_PE\data\otherTest.exe")               
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-7-15 14:16
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    发表于 2019-7-11 17:03:57 | 显示全部楼层
    这是用这个工具的一个问题 ,当初看过一本书,上面写的是这个工具不稳定,所以不建议用这种方式,我有一种方式,很稳定,我们运行到现在还没有出现过问题。
        def upload_picture_or_file(self,uploadtype,uploadfilexpath,filepath,ljcode,ljname):
            # 说明:con_path:\common\\fileconfig\\file\import.xlsx,请按照此路径填写,替换import.xlsx即可;不要自己更改路径格式,如有更改,可能会影响到后续代码;
            # ljcode:可以用auto3获取,默认使用#32770,如运行不通,在做修改,写法:u"#32770"
            # ljname:打开的对话框左上角的名称,一般为u'打开',写法:u"打开"
            time.sleep(3)
            # 点击上传文件按钮,uploadtype:为类型,x/name/class等;uploadfilexpath:为具体的值
            self.wait_is_visible(uploadtype, uploadfilexpath)
            # 此处必须加休息时间,不加会报错
            time.sleep(3)
            cur_path = os.path.abspath(os.path.dirname(__file__))
            con_path = filepath
            sp_path = os.path.split(os.path.split(cur_path)[0])[0]
            zh_path = eval(repr(sp_path + con_path).replace('\\', "\\"))
            print "zh_path:",zh_path
            # win32gui
            # dialog = win32gui.FindWindow('#32770', u'打开')  # 对话框
            dialog = win32gui.FindWindow(ljcode, ljname)  # 对话框
            ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None)
            ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None)
            Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None)  # 上面三句依次寻找对象,直到找到输入框Edit对象的句柄
            button = win32gui.FindWindowEx(dialog, 0, 'Button', None)  # 确定按钮Button

            win32gui.SendMessage(Edit, win32con.WM_SETTEXT, None, zh_path)  # 往输入框输入绝对地址
            win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)  # 按button
    可以参考下,很好用
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-7-15 14:16
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    发表于 2019-7-11 17:06:20 | 显示全部楼层
    用这个工具会不稳定,我们已经弃用了,现在用的是下面这个脚本的
        def upload_picture_or_file(self,uploadtype,uploadfilexpath,filepath,ljcode,ljname):
            # 说明:con_path:\common\\fileconfig\\file\import.xlsx,请按照此路径填写,替换import.xlsx即可;不要自己更改路径格式,如有更改,可能会影响到后续代码;
            # ljcode:可以用auto3获取,默认使用#32770,如运行不通,在做修改,写法:u"#32770"
            # ljname:打开的对话框左上角的名称,一般为u'打开',写法:u"打开"
            time.sleep(3)
            # 点击上传文件按钮,uploadtype:为类型,x/name/class等;uploadfilexpath:为具体的值
            self.wait_is_visible(uploadtype, uploadfilexpath)
            # 此处必须加休息时间,不加会报错
            time.sleep(3)
            cur_path = os.path.abspath(os.path.dirname(__file__))
            con_path = filepath
            sp_path = os.path.split(os.path.split(cur_path)[0])[0]
            zh_path = eval(repr(sp_path + con_path).replace('\\', "\\"))
            print "zh_path:",zh_path
            # win32gui
            # dialog = win32gui.FindWindow('#32770', u'打开')  # 对话框
            dialog = win32gui.FindWindow(ljcode, ljname)  # 对话框
            ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None)
            ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None)
            Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None)  # 上面三句依次寻找对象,直到找到输入框Edit对象的句柄
            button = win32gui.FindWindowEx(dialog, 0, 'Button', None)  # 确定按钮Button

            win32gui.SendMessage(Edit, win32con.WM_SETTEXT, None, zh_path)  # 往输入框输入绝对地址
            win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)  # 按button
    你可以参考下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2019-7-12 10:52:44 | 显示全部楼层
    jiaoshemme 发表于 2019-7-11 17:06
    用这个工具会不稳定,我们已经弃用了,现在用的是下面这个脚本的
        def upload_picture_or_file(self,up ...

    python35中没有wait_is_visible这个属性,请问这段代码的含义是什么呢?
    # 点击上传文件按钮,uploadtype:为类型,x/name/class等;uploadfilexpath:为具体的值
            self.wait_is_visible(id, 'uploadfilexpath')
    回复 支持 反对

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2019-7-12 11:19:28 | 显示全部楼层
    maggie6304 发表于 2019-7-12 10:52
    python35中没有wait_is_visible这个属性,请问这段代码的含义是什么呢?
    # 点击上传文件按钮,uploadty ...

    下图是我的代码,还是带不出来,不知道什么原因呢,文件上传的三种方法我都试了,都是一样的问题

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-7-15 14:16
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    发表于 2019-7-15 14:16:17 | 显示全部楼层
    哦哦,我们的wait_is_visible的意思就是去寻找某个元素,然后点击,其实就是find_element_by_xpath,之后.click
    回复 支持 反对

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2019-7-16 09:08:10 | 显示全部楼层
    jiaoshemme 发表于 2019-7-15 14:16
    哦哦,我们的wait_is_visible的意思就是去寻找某个元素,然后点击,其实就是find_element_by_xpath,之后.cl ...

    嗯,我把  # driver.find_element_by_id("uploadfile$text").click()注释掉了,就好了
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-4-19 10:32 , Processed in 0.081923 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表