maggie6304 发表于 2019-7-11 10:39:45

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

大家好,我这是一个input框,但是类型是text的,利用AutoIt3工具执行上传操作,单独在AutoIt3中执行是可以的,但是python调用之后,input框里始终加载不出来文件名称,请问是怎么回事呢?

qqq911 发表于 2019-7-11 11:22:52

看下脚本吧

jingzizx 发表于 2019-7-11 12:37:40

不太清楚

海海豚 发表于 2019-7-11 13:56:23

把信息在补充全一点吧,现在不知道是哪里出了问题

abcsell 发表于 2019-7-11 14:28:06

不懂

maggie6304 发表于 2019-7-11 16:19:53

qqq911 发表于 2019-7-11 11:22
看下脚本吧

AutoIt3脚本:
ControlFocus("打开","","Edit1")
WinWait("","",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")               

maggie6304 发表于 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("","",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")               

jiaoshemme 发表于 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))
      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
可以参考下,很好用

jiaoshemme 发表于 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))
      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
你可以参考下

maggie6304 发表于 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')

maggie6304 发表于 2019-7-12 11:19:28

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

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

jiaoshemme 发表于 2019-7-15 14:16:17

哦哦,我们的wait_is_visible的意思就是去寻找某个元素,然后点击,其实就是find_element_by_xpath,之后.click

maggie6304 发表于 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]
查看完整版本: Selenium文件上传使用AutoIt3工具获取不到文件名称