Python操作IHTMLDocument2用于自动化测试
获取IHTMLDocument2接口
参考:http://support.microsoft.com/kb/249232
相应的Python实现代码如下:
#coding:utf-8
__author__ = 'CoderZh'
import sys
# Important for multithreading
sys.coinit_flags = 0 # pythoncom.COINIT_MULTITHREADED
import win32com
import win32com.client
import win32gui
import win32con
import pythoncom
def getIEServer(hwnd, ieServer):
if win32gui.GetClassName(hwnd) == 'Internet Explorer_Server':
ieServer.append(hwnd)
if __name__ == '__main__':
#pythoncom.CoInitializeEx(0) # not use this for multithreading
mainHwnd = win32gui.FindWindow('windowclass', 'windowtitle')
if mainHwnd:
ieServers = []
win32gui.EnumChildWindows(mainHwnd, getIEServer, ieServers)
if len(ieServers) > 0:
ieServer = ieServers[0]
msg = win32gui.RegisterWindowMessage('WM_HTML_GETOBJECT')
ret, result = win32gui.SendMessageTimeout(ieServer, msg, 0, 0, win32con.SMTO_ABORTIFHUNG, 1000)
ob = pythoncom.ObjectFromLresult(result, pythoncom.IID_IDispatch, 0)
doc = win32com.client.dynamic.Dispatch(ob)
print doc.url
doc.all['id'].click()
#pythoncom.CoUninitialize()
多线程操作
IHTMLDocument2是线程安全的,默认情况下不能在多线程中使用,否则会抛异常。但是在具体使用过程中,又必须使用多线程。解决办法就是上面的代码中的:
sys.coinit_flags = 0 # pythoncom.COINIT_MULTITHREADED
这句必须在开头的时候设定,同时,不要再显示调用pythoncom.CoInitializeEx(0)和 pythoncom.CoUninitialize()。
参考:http://bytes.com/topic/python/answers/26897-multithreaded-com-server-problem
IHTMLDocument2 接口
IHTMLDocument2接口有哪些方法,可以查询http://msdn.microsoft.com/en-us/library/aa752574%28VS.85%29.aspx
基本能够满足自动化测试的需要,可以在此基础上封装出更易使用的自动化UI测试框架。
本文转自CoderZh博客园博客,原文链接:http://www.cnblogs.com/coderzh/archive/2010/05/05/python-IHTMLDocument2-automation.html,如需转载请自行联系原作者
Python操作IHTMLDocument2用于自动化测试相关推荐
- Python编程语言学习:for循环实现对多个不同的DataFrame数据执行相同操作(可用于对分开的测试集、训练集实现执行相同逻辑任务)
Python编程语言学习:for循环实现对多个不同的DataFrame数据执行相同操作(可用于对分开的测试集.训练集实现执行相同逻辑任务) 目录
- python接口测试_Python接口自动化测试框架实战开发(一)
目录 一丶叙述 二丶接口基础知识 三丶接口测试工具 四丶Fiddler的使用 五丶unittest使用 六丶mock服务入门到实战 七丶接口自动化框架设计到开发 一丶叙述 1.项目介绍 整个项目分为四 ...
- Python+uiautomator2手机UI自动化测试实战
Python+uiautomator2手机UI自动化测试实战 -- 2.(原文地址):https://blog.csdn.net/ricky_yangrui/article/details/81415 ...
- python测试框架untest_python自动化测试框架unittest
对于刚学习python自动化测试的小伙伴来说,unittest是一个非常适合的框架: 通过unittest,可以管理测试用例的执行,自动生成简单的自动化测试报告: 首先我们尝试编写编写一个最简单的un ...
- python 钉钉机器人发送图片,python操作钉钉机器人发送各种消息
python操作钉钉机器人发送各种消息 python操作钉钉机器人发送各种消息 使用python,操作钉钉群聊机器人发送消息 环境:python3.x 使用模块:requests,json 钉钉机器人 ...
- Python +Appium 实现app自动化测试
Python +Appium 实现app自动化测试 一.Appium简介 Appium是一款开源工具,用于自动化iOS.Android和Windows桌面平台上的本地.移动web和混合应用程序.原生应 ...
- Linux下Appium+Python+headless移动APP自动化测试实战
Linux下Appium+Python+Headless移动APP自动化测试实战 文章目录 Linux下Appium+Python+Headless移动APP自动化测试实战 1. 环境准备 1.1 安 ...
- Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
- Python操作Redis及连接方式
前沿:随着互联网的高速发展,数据变得越来越重要,Python成为了人工智能的热门语言,而Nosql数据库已成为日常开发用品. 今天要写的是Python操作Redis Redis的安装我就不介绍了,你可 ...
- python操作文件和目录_Python操作文件和目录
Python操作文件和目录 读写文件比较简单,有一点特别注意就好了 windows下Python默认打开的文件以gbk解码,而一般我们的文件是utf-8编码的,所以如果文本含有中文,就会出现异常或者乱 ...
最新文章
- Linux学习总结(七十)docker-2
- ACM入门之【快速幂】
- javascript:重新加载js文件
- java windows 下载_Windows环境下JDK的下载与安装
- DBShop电子商务系统
- do sb suggest to_suggest sb to do还是doing
- jmeter tps指标在哪里看_性能之路——性能测试连载 (3)-性能指标
- 剖析 AI 和大数据的分布式实践 —— 2018 UCan下午茶·北京站
- MySQL添加唯一约束和联合唯一约束(建表后添加)
- 靠知识赚钱只是较高级的体力劳动,靠智慧赚钱才能真正的富有。
- Hyperscan 5.4.0 安装教程 (CentOS7环境)
- html怎么加入页面登录背景,HTML+CSS实现动态背景登录页面
- 深层理解-栈平衡原理
- python毕业设计总结范文大全_毕业论文设计总结范文.docx
- 转:普通继电器和自锁继电器的差别
- matlab plotyy 标注,Matlab关于plotyy 标注 legend 的问题
- 贵州贵安新区试点大数据精准扶贫运营管理
- Excel单元格插入图片,并自适应宽高——保姆级教程
- logging日志写入文件
- 小米摄像机 nas网络存储 群晖nas
热门文章
- Atitit J2EE平台相关规范--39个 3.J2SE平台相关规范--42个
- Atitit.研发管理软件公司的软资产列表指南
- atitit.高性能遍历 文本文件行 attilax总结
- (转)好的投资应当是:善良为先,智慧为道,奋斗为本
- (转)Rust :文件分层
- 【TSP】基于matlab禁忌搜索算法求解31城市旅行商问题【含Matlab源码 1143期】
- 【语音分离】基于matlab FASTICA语音分离【含Matlab源码 1023期】
- 【滤波器】基于matlab升余弦滤波器【含Matlab源码 993期】
- 【缺陷检测】基于matlab形态学水果蔬菜缺陷检测【含Matlab源码 820期】
- 【数字信号】基于matlab GUI DTMF双音多频电话拨号仿真【含Matlab源码 805期】