精华内容
下载资源
问答
  • java的windows自动化-自动运行java程序java的windows自动化-自动运行java程序
  • windows自动化工具-AutoIT和中文说明文档.zip windows自动化工具-AutoIT和中文说明文档.zip windows自动化工具-AutoIT和中文说明文档.zip
  • windows自动化插件

    2018-08-16 13:30:08
    AutoIt v3 是一个类似 BASIC 脚本语言的免费软件, 它设计用于 Windows GUI(图形用户界面) 中进行自动化操作. 利用模拟键盘按键, 鼠标移动和窗口/控件的操作实现自动化任务. 而这是其它语言不可能做到或无可靠方法...
  • Windows 自动化补丁管理  Desktop Central,这一倍受欢迎的补丁管理软件旨在修补可能导致安全薄弱、破坏关键系统数据或导致系统不可用的漏洞。管理此类软件漏洞对网络管理员来说简直是噩梦。IT 管理员通常发现,很...

    Windows 自动化补丁管理

      Desktop Central,这一倍受欢迎的补丁管理软件旨在修补可能导致安全薄弱、破坏关键系统数据或导致系统不可用的漏洞。管理此类软件漏洞对网络管理员来说简直是噩梦。IT 管理员通常发现,很难在不了解系统薄弱性的相关情况下构建解决方案。补丁部署软件不仅可以进行补丁部署,还可扫描网络漏洞、识别缺失的安全补丁和修补程序,并立即部署以降低风险。
      Desktop Central 基于代理的解决方案可处理 Windows、Mac、 Linux和第三方应用补丁管理。包括系统发现;识别所需的 Windows 更新、Mac 更新 和第三方应用详情;部署相关补丁、修补程序、安全更新和补丁报表以简化网络管理员的工作。网络管理员可选择使用这种完全自动化的补丁管理软件解决方案,无需担心 Windows 系统修补工作。Desktop Central 补丁管理解决方案适用于基于 Windows AD域和工作组的网络。您现在可使用补丁管理应用程序来管理 Microsoft 和 非 Microsoft 补丁。
    下载免费电子书:Six best practices for escaping ransomware(《规避勒索软件的六大最佳做法》)
    请参阅Windows 桌面安全以了解如何使用 Desktop Central 增强桌面安全性。

    功能特色
    ManageEngine 站点托管的补丁数据库可评估网络的漏洞状态
    适用于物理和虚拟资产的完全自动化补丁管理解决方案。
    从检测缺失补丁/修补程序到部署补丁的解决方案
    基于补丁的部署 - 将一个补丁部署到所有适用系统中
    基于系统的补丁部署 - 为系统部署所有缺失的补丁和修补程序
    批量部署之前对补丁进行测试与审批
    自动处理补丁的相关性和补丁顺序
    系统漏洞、补丁、操作系统等的相关细节报表
    定期更新补丁部署状态。
    支持 Microsoft 和非 Microsoft 补丁。
    支持关于Microsoft Forefront 客户端安全软件的防病毒定义更新。

    系统自动发现
    Desktop Central 解决方案自动发现使用 Active Directory 的 Windows系统。管理员可选择须使用 Desktop Central 管理的系统。安装在系统中的 Desktop Central 代理执行Desktop Central 服务器发起的操作。此代理负责执行漏洞评估扫描和补丁部署。

    在线漏洞数据库
    在线漏洞数据库是 ManageEngine 站点中的门户。其中提供了经过详细分析后发布的最新漏洞数据库。此站点列示了全部可用的 Windows 更新。Desktop Central 服务器处于客户站点,从此数据库下载补丁。其中提供了补丁扫描和安装所需的信息。
    Desktop Central 服务器处于企业(客户站点),可扫描企业网络中的系统,根据全面的漏洞资料库检查缺失及可用的 Windows 补丁,下载并部署缺失的 Microsoft 补丁和服务包,并生成报表以高效管理企业的补丁管理流程。

    漏洞评估扫描
    Desktop Central 会扫描所有系统以查看操作系统以及应用程序中缺失的 Windows 补丁。在扫描之后会报告漏洞级别。这些缺失的 Windows 补丁会从本地漏洞数据库中进行识别,该数据库会定期与 ManageEngine 的外部在线漏洞数据库进行同步。

    补丁批准
    大部分情况下,在将补丁应用到整个网络中之前会先将其部署到测试环境中。这会使部署稳定平滑进行。当系统管理员团队部署时,可确保经团队测试的补丁会被直接批准用于部署,从而为管理员节省时间以便用于其他关键任务。

    补丁部署
    Desktop Central 会根据缺失的 Microsoft 补丁或系统漏洞部署补丁。部署时,代理会应用相关的安全更新和 Windows 补丁。然后,补丁部署的状态会更新 Desktop Central 的状态。可在补丁设置选项中计划安装过程。

    补丁报表
    补丁报表可用于系统漏洞级别、缺失的 Windows 补丁、适用的 Windows 补丁和任务状态。这些报表可导出为 PDF 或 CSV 格式。
    基于补丁严重程度的补丁管理
    Desktop Central 让管理员能够针对缺失的补丁创建和配置严重级别,从而无需根据常见的缺失补丁列表来评估系统健康和漏洞状态。这可用于根据严重程度部署补丁,并确保了缺失补丁识别的准确度。

    自动化补丁管理解决方案
    使用 Desktop Central 的自动补丁部署功能自动完成补丁管理过程。现在可以在网络中的计算机上自动部署缺失的补丁。使用自动补丁部署功能进行自动化的任务包括:
    定期扫描计算机以识别缺失的补丁
    从供应商网站上识别和下载缺失的补丁
    下载所需的补丁并创建与补丁部署相关的任务
    自动下载所需补丁并将其安装到特定计算机上
    可针对特定客户端系统集合指定上述所有补丁部署级别自动化。您可针对不同的客户端系统集合选择不同级别的自动化。自动部署补丁的过程取决于您选择的自动化程度。

    Microsoft Forefront 客户端安全定义更新
    防病毒定义更新对于运行 Microsoft Forefront 客户端安全软件的企业来说至关重要,这可以保护其网络免受木马和病毒攻击。随着恶意代码不断增多,网络管理员需密切关注,以避免任何可能的网络灾难。但是,您可使用 Desktop Central 补丁管理选项简化这一过程。使用自动补丁部署来频繁扫描病毒定义更新系统;指定在扫描成功完成时要执行的操作。

    支持的操作系统和应用程序
    Windows 7 (Enterprise, Professional, Ultimate)
    Windows 8
    Windows 8.1
    Windows 10
    Windows Vista (Enterprise, Business, Ultimate)
    Windows Server 2008 R2 (Datacenter, Enterprise & Standard)
    Windows Server 2008 (Standard, Enterprise & Web Server Editions)
    Windows Server 2003 (Standard, Web & Small Business ServerEditions)
    Windows Server 2012
    Windows XP Professional
    Microsoft Office 2003
    Microsoft Office 2007
    Mac 10.6
    Mac 10.7
    Mac 10.8
    Mac 10.9
    Mac 10.10
    Internet Explorer
    Windows Media Player
    .NET Framework
    MSXML
    DirectX(查看完整列表)
    免费的补丁管理软件
    使用 Desktop Central 免费版本 管理 Windows 补丁。
    请参阅补丁管理和 补丁管理生命周期了解更多详情。

    转载于:https://my.oschina.net/u/3942209/blog/2353995

    展开全文
  • 西门子_SIMATIC Windows 自动化中心 RTX WinAC RTX 2009pdf,
  • Python selenium Windows自动化测试环境搭建

    直接展示搭建过程:

    1.Python 环境下载

       下载地址:https://www.python.org/ftp/python/ 

       


    2.Python 安装

    Window下直接双击进行安装,直到完成。

    安装完成后,设置环境变量Path,方便执行Python命令


    设置成功后,在Dos命令下,输入python 回车,如果出现以下信息证明安装成功


    3.Python 包管理工具pip安装

     在Python安装目录下 C:\Python27\Scripts 找到 easy_install.exe 在Dos下运行 easy_install.exe pip 进行安装


    安装完成后, C:\Python27\Scripts下会多出一些与pip相关的文件


    将该目录设置到环境变量下



    4.用pip管理工具安装selenium

    在dos下执行 pip install selenium 默认安装的就是最新的版本


    5.使用Python 自带IDE编写脚本实现百度自动搜索

    在Dos下运行 C:\Python27\Lib\idlelib目录下idle.bat 打开IDE


    Python脚本如下:

    ## 引入WebDriver包
    from selenium import webdriver
    
    ## 创建浏览器对象
    browser = webdriver.Firefox()
    
    ## 导航到百度主页
    browser.get('https://www.baidu.com')
    
    ## 找到名字为wd的元素,赋值给elem
    elem = browser.find_element_by_name('wd')  # 找到搜索框
    elem.send_keys('seleniumhq' )  # 搜索seleniumhq
    
    ## 关闭浏览器
    browser.quit()
    

    在IDE中敲入上述代码:


    火狐浏览器会自动打开,并自动请求百度网站,并自动搜索selenium



    6.问题补充

    Python运行时提示WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

    geckodriver是一原生态的第三方浏览器,对于selenium3.x版本都会使用geckodriver来驱动firefox,

    所以需要下载geckodriver.exe。https://github.com/mozilla/geckodriver/releases


    解压后将geckodriver.exe所在目录 放置在Path 环境变量 再重新执行Python脚本即可。




    展开全文
  • 使用pywin32制作Windows自动化工具

    千次阅读 2020-01-16 23:07:49
    使用pywin32制作Windows自动化工具 最近在实验室用ENVI标了一批图,好多操作都是机械的重复的,于是想有没有可能做一个自动化的小工具来简化操作。查了一些资料发现pywin32应该是可以。于是先尝试简单做一个小例子...

    使用pywin32制作Windows自动化工具

    最近在实验室用ENVI标了一批图,好多操作都是机械的重复的,于是想有没有可能做一个自动化的小工具来简化操作。查了一些资料发现pywin32应该是可以。于是先尝试简单做一个小例子练练手。

    这篇做的是打开记事本,输入helloworld,选择编码格式为utf-8并保存。

    使用了spy++工具来辅助

    程序的启动

    这里有两种写法,用下面哪一句都可

    def start_app(path):
        win32api.ShellExecute(0, 'open', path,'','',1)
        # os.startfile(path)  # 也可用这条
    

    窗口的定位

    每一个窗口都有唯一的一个handle,调用win32API的时候,这个handle是操作每一个窗口和控件必须的参数。

    要找到窗口的handle,需要两个函数

    • FindWindow(lpClassName=None, lpWindowName=None):
      • 描述:自顶层窗口(也就是桌面)开始搜索条件匹配的窗体,并返回这个窗体的句柄。不搜索子窗口、不区分大小写。找不到就返回0
      • 参数:
        lpClassName:字符型,是窗体的类名,这个可以在Spy++里找到。
        lpWindowName:字符型,是窗口名,也就是标题栏上你能看见的那个标题。
      • 说明:这个函数我们仅能用来找主窗口。
    • FindWindowEx(hwndParent=0, hwndChildAfter=0, lpszClass=None, lpszWindow=None);
      • 描述:搜索类名和窗体名匹配的窗体,并返回这个窗体的句柄。不区分大小写,找不到就返回0。
      • 参数:
        hwndParent:若不为0,则搜索句柄为hwndParent窗体的子窗体。
        hwndChildAfter:若不为0,则按照z-index的顺序从hwndChildAfter向后开始搜索子窗体,否则从第一个子窗体开始搜索。
        lpClassName:字符型,是窗体的类名,这个可以在Spy++里找到。
        lpWindowName:字符型,是窗口名,也就是标题栏上你能看见的那个标题。
      • 说明:找到了主窗口以后就靠它来定位子窗体啦。

    参考https://blog.csdn.net/bluehawksky/article/details/44957627

    首先要获取主窗口的handle

    notepad_path = r'C:\Windows\notepad.exe'
    start_app(notepad_path)
    while True:
        win = win32gui.FindWindow('Notepad','')
        if win != 0:
            win32api.Sleep(200)
            break
    

    这里用了一个循环是因为程序启动需要时间,后面出现有延迟的地方,都是在实际测试的时候,有时候窗口没有完全打开导致查询不到窗口。

    封装了几个函数,可以直接调用

    def printHandle(func):
        def wrapper(*args, **kw):
            handle = func(*args, **kw)
            print('%x' % (handle))
            return handle
        return wrapper
    
    
    def find_idxSubHandle(pHandle, winClass, index=0):
        """
        已知子窗口的窗体类名
        寻找第index号个同类型的兄弟窗口
        """
        assert type(index) == int and index >= 0
        handle = win32gui.FindWindowEx(pHandle, 0, winClass, None)
        while index > 0:
            handle = win32gui.FindWindowEx(pHandle, handle, winClass, None)
            index -= 1
        return handle
    
    
    def find_subHandle(pHandle, winClassList):
        """
        递归寻找子窗口的句柄
        pHandle是祖父窗口的句柄
        winClassList是各个子窗口的class列表,父辈的list-index小于子辈
        """
        assert type(winClassList) == list
        if len(winClassList) == 1:
            return find_idxSubHandle(pHandle, winClassList[0][0], winClassList[0][1])
        else:
            pHandle = find_idxSubHandle(pHandle, winClassList[0][0], winClassList[0][1])
            return find_subHandle(pHandle, winClassList[1:])
    
    
    @printHandle
    def find_handle_by_wndlist(pHandle, winClassList):
        return find_subHandle(pHandle, winClassList)
    

    说明:printHandle是一个装饰器,打印出返回的handle,结合spy++对比返回的窗口是不是我们想要的,主要用来调试。

    这里结合spy++举个例子
    比如我们想定位记事本的输入区域
    在这里插入图片描述
    打开spy++,右键刷新一下窗口,点击工具栏的望远镜,弹出窗口搜索,把靶心标志的图标拖到记事本的编辑区域,即返回句柄标题类等信息。
    在这里插入图片描述
    点击确定,定位出该窗口的位置
    在这里插入图片描述
    外面的“无标题-记事本”是最外面的窗口,Edit是他的一个子窗口

    定位这个窗口就这样写就可以了,返回Edit窗口的handle

    edit_handle = find_handle_by_wndlist(win, [('Edit', 0)])
    

    如果有链式的关系就像这样写:

    save_name_handle = find_handle_by_wndlist(save_win, [('DUIViewWndClassName',0),('DirectUIHWND',0),\
                                                             ('FloatNotifySink',0),('ComboBox',0),('Edit',0)])
    

    tuple中第一个参数是窗口的类名,第二个参数是寻找窗口时,如果有相同类名的窗口,这些窗口之间就有一个顺序,从0开始编,用不同的数字区分这些窗口。

    往编辑区填内容

    win32这些几乎所有的操作都是通过消息,消息的参数太复杂了,我就把常用到的操作封装起来了

    def fill_content(handle, content):
        win32gui.SendMessage(handle, win32con.WM_SETTEXT, None, content)
    

    这句的handle填Edit窗口的句柄,content是要输入的内容

    操作菜单

    在这里插入图片描述
    需要几个函数:

    • GetMenu(handle)
      返回菜单栏的handle,参数填主窗口的handle,返回菜单栏的handle
    • GetSubMenu(menu_handle, index)
      子菜单,menu_handle填GetMenu返回的handle,或者上一级的handle
    • GetMenuItemID(menu_handle, index)
      获取菜单栏中某一项的handle,是接下来传递消息时需要的参数

    封装了一个函数:

    @printHandle
    def get_menu_item(handle, posilist):
        menu_handle = win32gui.GetMenu(handle)
        for index in posilist:
            if index is posilist[-1]:
                cmd_ID = win32gui.GetMenuItemID(menu_handle, index)
                break
            menu_handle = win32gui.GetSubMenu(menu_handle, index)
        return cmd_ID
    

    handle是主窗口的handle,posilist是描述菜单栏中某一项的位置的,比如前面那张图,另存为的位置是[0, 3]。注意:如果有分割线,分割线也是计数的

    这个函数这样使用:

    saveas_posilist = [0, 3]
    saveas_handle = get_menu_item(win, saveas_posilist)
    

    打开菜单栏中某一项(另存为)

    使用这个函数

    def open_menu_item(handle, menu_item_id):
        win32gui.PostMessage(handle, win32con.WM_COMMAND, menu_item_id, 0)
    

    handle是主窗口的handle,menu_item_id是上一步返回的结果

    open_menu_item(win, saveas_handle)
    

    模拟点击

    点击确定按钮的时候会用到,下面两个函数测试过都可以

    def leftClick(handle):
        win32gui.SendMessage(handle, win32con.WM_LBUTTONDOWN, None, None)
        win32gui.SendMessage(handle, win32con.WM_LBUTTONUP, None, None)
    
    
    def send_click_msg(Mhandle, confirmBTN_handle):
        win32api.SendMessage(Mhandle, win32con.WM_COMMAND, 1, confirmBTN_handle)
    

    操作comboBox

    在这里插入图片描述
    这里选择utf-8编码,具体操作参考了前面提到那篇文章,比较复杂,封装起来直接用:

    def select_comboBox_item(PCB_handle, CB_handle, select_index):
        if win32api.SendMessage(CB_handle, win32con.CB_SETCURSEL, select_index, 0) == select_index:
            win32api.SendMessage(PCB_handle, win32con.WM_COMMAND, win32con.CBN_SELENDOK & 16+0, CB_handle)  # 控件的ID是0,所以低位直接加0
            win32api.SendMessage(PCB_handle, win32con.WM_COMMAND, win32con.CBN_SELCHANGE & 16+0, CB_handle)
        else:
            raise Exception("Change saving type failed")
    

    这里PCB_handle是comboBox的主窗口的handle,CB_handle是comboBox的handle,select_index是定位选项的数

    这里参考的文章写的PCB_handle是父窗口,我实际填进去的是主窗口(最外面的那一层,也就是“另存为”所在窗口),运行没有问题

    完整程序

    import win32gui
    import win32con
    import win32api
    
    
    def printHandle(func):
        def wrapper(*args, **kw):
            handle = func(*args, **kw)
            print('%x' % (handle))
            return handle
        return wrapper
    
    
    def find_idxSubHandle(pHandle, winClass, index=0):
        """
        已知子窗口的窗体类名
        寻找第index号个同类型的兄弟窗口
        """
        assert type(index) == int and index >= 0
        handle = win32gui.FindWindowEx(pHandle, 0, winClass, None)
        while index > 0:
            handle = win32gui.FindWindowEx(pHandle, handle, winClass, None)
            index -= 1
        return handle
    
    
    def find_subHandle(pHandle, winClassList):
        """
        递归寻找子窗口的句柄
        pHandle是祖父窗口的句柄
        winClassList是各个子窗口的class列表,父辈的list-index小于子辈
        """
        assert type(winClassList) == list
        if len(winClassList) == 1:
            return find_idxSubHandle(pHandle, winClassList[0][0], winClassList[0][1])
        else:
            pHandle = find_idxSubHandle(pHandle, winClassList[0][0], winClassList[0][1])
            return find_subHandle(pHandle, winClassList[1:])
    
    
    @printHandle
    def find_handle_by_wndlist(pHandle, winClassList):
        return find_subHandle(pHandle, winClassList)
    
    
    def fill_content(handle, content):
        win32gui.SendMessage(handle, win32con.WM_SETTEXT, None, content)
    
    
    def start_app(path):
        win32api.ShellExecute(0, 'open', path,'','',1)
        # os.startfile(path)  # 也可用这条
    
    
    def select_comboBox_item(PCB_handle, CB_handle, select_index):
        if win32api.SendMessage(CB_handle, win32con.CB_SETCURSEL, select_index, 0) == select_index:
            win32api.SendMessage(PCB_handle, win32con.WM_COMMAND, win32con.CBN_SELENDOK & 16+0, CB_handle)  # 控件的ID是0,所以低位直接加0
            win32api.SendMessage(PCB_handle, win32con.WM_COMMAND, win32con.CBN_SELCHANGE & 16+0, CB_handle)
        else:
            raise Exception("Change saving type failed")
    
    
    @printHandle
    def get_menu_item(handle, posilist):
        menu_handle = win32gui.GetMenu(handle)
        for index in posilist:
            if index is posilist[-1]:
                cmd_ID = win32gui.GetMenuItemID(menu_handle, index)
                break
            menu_handle = win32gui.GetSubMenu(menu_handle, index)
        return cmd_ID
    
    
    def open_menu_item(handle, menu_item_id):
        win32gui.PostMessage(handle, win32con.WM_COMMAND, menu_item_id, 0)
    
    
    def leftClick(handle):
        win32gui.SendMessage(handle, win32con.WM_LBUTTONDOWN, None, None)
        win32gui.SendMessage(handle, win32con.WM_LBUTTONUP, None, None)
    
    
    def send_click_msg(Mhandle, confirmBTN_handle):
        win32api.SendMessage(Mhandle, win32con.WM_COMMAND, 1, confirmBTN_handle)
    
    
    if __name__ == '__main__':
        save_path = r'd:\test.txt'
        notepad_path = r'C:\Windows\notepad.exe'
        start_app(notepad_path)
        saveas_posilist = [0, 3]
        while True:
            win = win32gui.FindWindow('Notepad','')
            if win != 0:
                win32api.Sleep(200)
                break
        edit_handle = find_handle_by_wndlist(win, [('Edit', 0)])
        fill_content(edit_handle, 'hello world')
        saveas_handle = get_menu_item(win, saveas_posilist)
        open_menu_item(win, saveas_handle)
        while True:
            if win32gui.FindWindow(None, '另存为')!=0:
                win32api.Sleep(2000)
                break
            else:
                win32api.Sleep(200)
        save_win = win32gui.FindWindow(None, '另存为')
        save_name_handle = find_handle_by_wndlist(save_win, [('DUIViewWndClassName',0),('DirectUIHWND',0),\
                                                             ('FloatNotifySink',0),('ComboBox',0),('Edit',0)])
        fill_content(save_name_handle, save_path)
        comboBox_handle = find_handle_by_wndlist(save_win, [('ComboBox', 0)])
        select_comboBox_item(save_win,comboBox_handle,3)
        save_btn_handle = find_handle_by_wndlist(save_win, [('Button', 0)])
        send_click_msg(save_win, save_btn_handle)
    
    

    运行结果:打开新的文本文档,输入hello world,保存为utf-8编码,存在d:\test.txt

    展开全文
  • 摘要:自动化的任务并不仅仅局限于某一平台或某一端,当然,不可否认的是,基于Web的B/S系统自动化成本相对较低,当然,这个低也仅仅是相对于自动化而言的。自动化从来就不是一个省钱的工具一、从B/S到C/S在web端,...

    摘要:自动化的任务并不仅仅局限于某一平台或某一端,当然,不可否认的是,基于Web的B/S系统自动化成本相对较低,当然,这个低也仅仅是相对于自动化而言的。自动化从来就不是一个省钱的工具

    一、从B/S到C/S

    在web端,我们有完整的一套开源工具——Selenium,辅以Java、Python甚至是Ruby都能够很好的完成自动化测试任务,体系也相对成熟,即使对于中小企业而言,组建一个小型的自动化测试团队,也能在一定程度上确保企业级B/S服务系统的质量。即使不用Selenium,也有茫茫多工具供君选择,何其乐哉。公司的Web自动化测试已经走过了八个年头,从QTP转到Selenium,至今,Selenium也早已迈入了3.0时代,从Selenium 到Selenium Grid 再到Data Driven乃至跨浏览器,跨平台,过渡的总不会那么生硬。但是到了Client,一切似乎都要重新开始。

    二、Windows平台的工具选择

    AutoIT、Pywinauto也算是硕果仅存的两个Windows平台自动化测试工具了吧, AutoIt,不用多说,如果你想要更多了解的话,请点击这里 。这里主要来看Pywinauto的测试实践。

    相对Selenium的多语言支持,只能用python的pywinauto显得略微单薄,但也不能过多非议,毕竟人家是pywinauto而不是javawinauto或者rubywinauto什么的。这里照搬官网的简介:pywinauto is a GUI automation library written in pure Python and well developed for Windows GUI. At its simplest it allows you to send mouse and keyboard actions to dialogs and controls on both Windows and Linux, while more complex text-based actions are supported on Windows only so far (Linux AT-SPI support is under development).

    也就是说,它呢,是使用python编写的用于GUI自动化测试的开源框架,另外明确的说了,它能够支持在Windows平台和Linux平台,对客户端应用进行鼠标和键盘输入、控制等一系列命令。当然,Linux平台还是在开发中,尽管个人觉得发布的可能性趋近于tan90°。 言归正传,在对pywinauto的探索中,pywinauto是作为辅助作用的,也就是说,在web端进行一系列操作之后,要利用pywinauto得到客户端的状态信息,用来验证操作的正确性。

    例如,一个产品包括web端和Windows客户端,为用户提供远程软件管理功能。大概是下面这个样子:

    那么,当我们选择在web端在线安装应用,服务器会向本地客户端发送命令,客户端从第三方下载并控制本机自动安装所选项目,在这一过程中,数据从web端流转到客户端,自然的,在验证的过程中需要确定客户端的接受和执行情况以及最终的web端的安装状态正确与否。因此,在web端和第三方平台,我们可以选择用Selenium进行自动化测试,而对于客户端,我们只能选择pywinauto这类GUI自动化测试工具。

    三、Java和Python的数据交互

    在web端,我们采用的是Selenium+Java的方式,因而在python和java的交互和相互调用上会有一点点麻烦,在这里,我们用jython这个包来实现,在pom文件中加入以下内容即可:

    1

    2 org.python

    3 jython

    4 2.5.3

    5

    我们首先创建一个最简单的python来测试交互的可用性:

    1 defadder(a, b):2 return a + b

    接下来,在Java代码中调用这个Python方法:

    1 packagejqi.JavaAndPython.Intergration;2

    3 importorg.python.core.PyFunction;4 importorg.python.core.PyInteger;5 importorg.python.core.PyObject;6 importorg.python.util.PythonInterpreter;7

    8 public classJAndPUnify {9 public static voidmain(String[] args){10 PythonInterpreter interpreter = newPythonInterpreter();11 interpreter.execfile("C:\\Users\\jqi\\Desktop\\AEMUI\\input.py");12 PyFunction func = (PyFunction)interpreter.get("adder",PyFunction.class);13

    14 int a = 2010, b = 2;15 PyObject pyobj = func.__call__(new PyInteger(a), newPyInteger(b));16 System.out.println("anwser = " +pyobj.toString());17 }18 }

    JAndPUnify

    运行Java程序即可看到:

    anwser = 2012

    说明我们成功调用了python脚本。那么数据的流向和方式的问题就解决了,接下来所要做的只是针对client编写python脚本。

    展开全文
  • 使用python进行windows自动化测试

    千次阅读 2014-04-11 08:54:48
    最近开始学习整理python在windows自动化测试中的使用,觉得挺有意思的 主要思路,在windows下,主要通过启进程,然后查找进程的句柄,然后再操作这个句柄,包括点击,填写文字,关闭,获取文字等操作 下面以一个...
  • windows 自动化测试

    2019-04-28 09:07:02
    http://www.cnblogs.com/Anec/p/10370401.html
  • Jenkins添加Windows自动化构建方案

    千次阅读 2017-02-27 17:38:23
    Jenkins添加Windows下的C/C++自动化构建方案
  • AutoIt:Windows自动化测试

    千次阅读 2017-06-30 14:13:12
    windows上一般用批处理来进行自动化的操作,但是如何能够对GUI程序进行自动化控制,这方面的信息还比较少,有位高手向我推荐了AutoIt这个脚本工具。 AutoIt是一个免费软件,是一个与BASIC类似的脚本语言,主要用于...
  • windows自动化脚本,提高生产力必备。 不定期更新 目录 1.bat脚本 1.1.映射网络驱动器 1.2.开机自启动​​​​​​​ 1.3.自动添加环境变量脚本 1.bat脚本 1.1.映射网络驱动器 参考:...
  • Win32ole是访问Windows自动化的接口,可以让Ruby和Windows应用进行交互。具体说来Win32ole可以操作Word,Excel,IE,Outlook等。 以下均为代码片段 Word 创建一个Word文件 Ruby代码  require 'win32...
  • Windows自动化部署教程

    2009-10-16 19:03:46
    此方案的特点是1) 实现了自动识别新装机还是重装机,自动先择分区还是格盘,2) 自动识别C 盘在第几个分区上,按实际情况编写BOOT.INI,3)自动安装系统及驱动,4) 驱 动、脚本放在共享里维护方便,5)重新系统时...
  • 那么在一些工具齐全并且已经有了一定的写好的java程序的情况下(环境变量和软件见上一章http://www.cnblogs.com/xuezhezlr/p/7718273.html),如何自动化运行java程序呢本文所有路径都是本地的绝对路径,读者应...
  • python操纵windows自动化-pywinauto

    千次阅读 2020-03-10 19:46:31
    python自动控制电脑2前景回顾:连接程序1:通过路径打开新的程序2:通过进程号连接已有程序3:通过句柄连接已有程序4:通过路径连接已有程序5:通过标题和类型连接已有程序对按钮、菜单和文本框进行控制打包成独立...
  • 如果未安装 Windows 自动化 API 3.0,使用 Windows 自动化 api 的应用程序可以显著减少 Microsoft Visual Studio 智能感知性能。 例如,Windows 笔和触摸服务可以显著减少 Visual Studio 智能感知性能,如果没有安装...
  • 如果未安装 Windows 自动化 API 3.0,则使用 Windows 自动化 API 的应用程序会明显降低 Microsoft Visual Studio IntelliSense 的性能。例如,如果未安装 Windows 自动化 API 3.0,则 Windows 笔和触摸服务会...
  • web和mobile app的自动化比较广泛,但是在PC端,一直没有找到很成熟的测试框架,于是我自己用了很多精力,搭建了一套较为稳定的windows 上操作各个应用的自动化框架。 可以根据元素定位(类似于网页上的locator定位...
  • Windows自动化上传文件至FTP

    千次阅读 2018-09-17 11:17:43
    开始之前先简单说明下cmd文件和bat文件的...cmd文件只有在windows2000以上的系统中才能运行,而bat文件则没有这个限制。从它们的文件描述中也可以看出以上的区别:cmd文件的描述是“windows nt命令脚本”, bat文...
  • windows自动化批处理删除文件

    千次阅读 2018-03-31 16:31:07
    前言最近发现某软件删除某几个文件夹之后,就可以再次免费试用,但试用期结束之后需要再次重复删除。于是想到了批处理命令,大家可以创建txt文件,然后编辑命令后将文件后缀改成bat,然后双击运行即可完成批量删除...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,495
精华内容 6,198
关键字:

windows自动化