1. upload = dr.find_element_by_id('exampleInputFile0')
  2. upload.click()
  3. time.sleep(1)
  4. # win32gui
  5. dialog = win32gui.FindWindow('#32770', u'打开') # 对话框
  6. ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None)
  7. ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None)
  8. Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None) # 上面三句依次寻找对象,直到找到输入框Edit对象的句柄
  9. button = win32gui.FindWindowEx(dialog, 0, 'Button', None) # 确定按钮Button
  10. win32gui.SendMessage(Edit, win32con.WM_SETTEXT, None, 'D:\category.sql') # 往输入框输入绝对地址
  11. win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) # 按button
    ----------------------------------
  12. 函数功能:该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始。在查找时不区分大小写。
  13.     函数原型:HWND FindWindowExHWND hwndParentHWND hwndChildAfterLPCTSTR lpszClassLPCTSTR lpszWindow);
  14.     参数;
  15.     hwndParent:要查找子窗口的父窗口句柄。
  16.     如果hwnjParentNULL,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口。
  17.     Windows NT5.0 and later:如果hwndParentHWND_MESSAGE,函数仅查找所有消息窗口。
  18.     hwndChildAfter :子窗口句柄。查找从在Z序中的下一个子窗口开始。子窗口必须为hwndPareRt窗口的直接子窗口而非后代窗口。如果HwndChildAfterNULL,查找从hwndParent的第一个子窗口开始。如果hwndParent hwndChildAfter同时为NULL,则函数查找所有的顶层窗口及消息窗口。
  19.     lpszClass:指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针。如果该参数为一个成员,则它必须为前次调用theGlobaIAddAtom函数产生的全局成员。该成员为16位,必须位于lpClassName的低16位,高位必须为0
  20.     lpszWindow:指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为 NULL,则为所有窗口全匹配。返回值:如果函数成功,返回值为具有指定类名和窗口名的窗口句柄。如果函数失败,返回值为NULL
  21.     若想获得更多错误信息,请调用GetLastError函数。

Unity3d中SendMessage 用法简单笔记

Message相关有3条指令:
SendMessage ("函数名",参数,SendMessageOptions) //GameObject自身的Script
BroadcastMessage ("函数名",参数,SendMessageOptions)  //自身和子Object的Script
SendMessageUpwards ("函数名",参数,SendMessageOptions)  //自身和父Object的Script
用于向某个GameObject发送一条信息,让它完成特定功能。
其实本质是调用那个GameObject里面的Script里面的函数,可以跨语言的,例如Javascript可以调用C#的函数,我已实验成功。
☆另外,如果GameObject本身有两个脚本,例如“move1”和“move2”,两个脚本内有同名函数例如“moveMe()”,会两个函数都执行一次。

第三个参数使用:
SendMessageOptions.RequireReceiver //如果没有找到相应函数,会报错(默认是这个状态)
SendMessageOptions.DontRequireReceiver //即使没有找到相应函数,也不会报错,自动忽略

  1. enumerate()说明
  2.     enumerate()是python的内置函数
        enumerate在字典上是枚举、列举的意思
        对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
        enumerate多用于在for循环中得到计数
  3.     例如对于一个seq,得到:
  4.     (0, seq[0]), (1, seq[1]), (2, seq[2])
            1
  5.     enumerate()返回的是一个enumerate对象,例如:
        这里写图片描述
  6. enumerate()使用
  7.     如果对一个列表,既要遍历索引又要遍历元素时,首先可以这样写:
  8. list1 = ["这", "是", "一个", "测试"]
    for i in range (len(list1)):
        print i ,list1[i]
  9.     上述方法有些累赘,利用enumerate()会更加直接和优美:
  10. list1 = ["这", "是", "一个", "测试"]
    for index, item in enumerate(list1):
        print index, item
    >>>
    0
    1
    2 一个
    3 测试
  11.     enumerate还可以接收第二个参数,用于指定索引起始值,如:
  12. list1 = ["这", "是", "一个", "测试"]
    for index, item in enumerate(list1, 1):
        print index, item
    >>>
    1
    2
    3 一个
    4 测试
  13. 补充
  14. 如果要统计文件的行数,可以这样写:
  15. count = len(open(filepath, 'r').readlines())
  16. 这种方法简单,但是可能比较慢,当文件比较大时甚至不能工作。
  17. 可以利用enumerate():
  18. count = 0
    for index, line in enumerate(open(filepath,'r')):
        count += 1

python+selenium win32gui实现文件上传 enumerate()的更多相关文章

  1. python+selenium+autoit实现文件上传

    问题 在做web端ui层自动化的时候会碰到文件上传的操作,经常有朋友问到,这里总结一下 解决方案 第一种:type=file的上传文件,类似如下的 使用类似这样的代码就可以完成: driver.fin ...

  2. python selenium +autoit实现文件上传 --实践

    upload.html <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&q ...

  3. 基于python的selenium两种文件上传操作

    方法一.input标签上传     如果是input标签,可以直接输入路径,那么可以直接调用send_keys输入路径,这里不做过多赘述,前文有相关操作方法. 方法二.非input标签上传 这种上传方 ...

  4. Python+selenium(Autolt实现上传)

    AutoIt是一个使用类似BASIC脚本语言的免费软件,被设计用来进行Windows GUI的自动化测试.它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务. 此次小编介绍的是利用Auto ...

  5. 利用 python requests完成接口文件上传

    最近在准备一个公开课,主题就是利用不同的语言和不同的工具去实现文件的上传和下载. 在利用Jmeter去实现功能的时候,以及利用loadrunner去写脚本的时候,都很顺利,没有任何问题,当我尝试用Py ...

  6. 利用Selenium实现图片文件上传的两种方式介绍

    在实现UI自动化测试过程中,有一类需求是实现图片上传,这种需求根据开发的实现方式,UI的实现方式也会不同. 一.直接利用Selenium实现 这种方式是最简单的一种实现方式,但是依赖于开发的实现. 当 ...

  7. python接口自动化7-post文件上传

    前言 文件上传在我们软件是不可少的,最多的使用是体现在我们后台,当然我们前台也会有.但是了解过怎样上传文件吗?这篇我们以禅道文档-创建文档,上传文件为例. post请求中的:Content-Type: ...

  8. python django web 端文件上传

    利用Django实现文件上传并且保存到指定路径下,其实并不困难,完全不需要用到django的forms,也不需要django的models,就可以实现,下面开始实现. 第一步:在模板文件中,创建一个f ...

  9. python web中的文件上传与下载

    django 框架下 实现服务端的文件上传与下载: import jsonimport osimport uuid def attachment_upload(request): "&quo ...

随机推荐

  1. MySQL最优配置模板( 5.6&5.7转)

    [client] user = root --用户 password = 1111aaA_ -- 密码 [mysql] prompt = [\\u@\\p][\\d]>\\_ -- cmd控制台 ...

  2. Python3学习之路~4.4 软件目录结构规范

    为什么要设计好目录结构? 可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等.从而非常快速的了解这个项目. 可维护性高: 定义好组织 ...

  3. winform里直接使用WCF,不需要单独的WCF项目

    https://www.cnblogs.com/fengwenit/p/4249446.html 依照此法建立即可, 但是vs生成的配置有误,正确配置如下 <?xml version=" ...

  4. wxPython:事件处理一

    事件处理是wxPython程序工作的基本机制,先看几个术语: 事件(event):应该程序期间发生的事情,要求有一个响应. 事件对象(event object):代表具体一个事件,包括事件的数据属性, ...

  5. jquery小结收藏

    //根据id获取控件的值,如果没有数据默认赋值为0 function getDataById(id) { var data = $("#"+id).val(); if(data== ...

  6. Python 全栈开发十一 深浅拷贝

    深浅拷贝 深浅拷贝的前提: 相等和相同的关系 深浅拷贝针对的是列表等可变的数据类型. 深浅拷贝在普通的列表没有什么意义,只有在嵌套列表,或其他嵌套数据类型才有意义. a = "aaa&quo ...

  7. 2019.03.20 mvt,Django分页

    MVT模式   MVT各部分的功能:   M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理.       V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返 ...

  8. 后续使用dubbo的必要性的思考

    要做微服务,要做分布式,就得先解决网络调用即rpc的问题

  9. centos 打包报错Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.

    参考: https://blog.csdn.net/salonzhou/article/details/8990237https://stackoverflow.com/questions/23358 ...

  10. [LeetCode] 100. Same Tree_Easy tag: DFS

    Given two binary trees, write a function to check if they are the same or not. Two binary trees are ...