#! /usr/bin/env python
#Author: XIE TIAN
# -*- coding:utf8 -*-
from __future__ import unicode_literals
import subprocess
import uiautomation as automation
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

class switch(object):
    def __init__(self, value):
        self.value = value
        self.fall = False
    def __iter__(self):
        """Return the match method once, then stop"""
        yield self.match
        raise StopIteration
    def match(self, *args):
        """Indicate whether or not to enter a case suite"""
        if self.fall or not args:
            return True
        elif self.value in args: # changed for v1.5, see below
            self.fall = True
            return True
        else:
            return False

''' to run smoke test cases of a modality.
[param][in] Main Windows Name e.g PatientAdmin
[param][in] Control Type
[param][in] Control Name
[param][in] Control AutomationId
'''
def FindControlObj(mainWindow, controlType,controlName,controlAutomationId):

type = sys.getfilesystemencoding()       
    mainWindow = mainWindow.decode('gb2312')
    
    controlType=controlType.decode('utf-8').encode(type)
    
    controlName=controlName.decode('gb2312')
    
    controlAutomationId=controlAutomationId.decode('utf-8').encode(type)
    
    
    if mainWindow=="":
        wpfWindow=None
    else:
        wpfWindow=automation.WindowControl(Name=mainWindow)
        
    if controlName=="":
        controlName=None
    if controlAutomationId=="":
        controlAutomationId=None

for case in switch(controlType.lower()):
            if case('button'):
                button=automation.ButtonControl(searchFromControl = wpfWindow,Name=controlName,AutomationId=controlAutomationId)
                result=automation.WaitForExist(button,30)
                if result==True:
                    return button
                else:
                    print 'control not found'
                break
            if case('radiobutton'):
                if controlName=="":
                    radioButton=automation.RadioButtonControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(radioButton,30)
                    if result==True:
                        return radioButton
                    else:
                        print 'control not found'

else:
                    radioButton=automation.RadioButtonControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(radioButton,30)
                    if result==True:
                        return radioButton
                    else:
                        print 'control not found'
                break
            if case('edit'):
                if controlName=="":
                    edit = automation.EditControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(edit,30)
                    if result==True:
                        return edit
                    else:
                        print 'control not found'
                   
                else:
                    edit = automation.EditControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(edit,30)
                    if result==True:
                        return edit
                    else:
                        print 'control not found'
                break
            if case('checkbox'):
                if controlName=="":
                    checkbox = automation.CheckBoxControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(checkbox,30)
                    if result==True:
                        return checkbox
                    else:
                        print 'control not found'
                    
                else:
                    checkbox = automation.CheckBoxControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(checkbox,30)
                    if result==True:
                        return checkbox
                    else:
                        print 'control not found'

break
            if case('combobox'):
                if controlName=="":
                    combobox = automation.ComboBoxControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(combobox,30)
                    if result==True:
                        return combobox
                    else:
                        print 'control not found'

else:
                    combobox = automation.ComboBoxControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(combobox,30)
                    if result==True:
                        return combobox
                    else:
                        print 'control not found'
                    
                break
            if case('tabitem'):
                if controlName=="":
                    tabitem = automation.TabItemControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(tabitem,30)
                    if result==True:
                        return tabitem
                    else:
                        print 'control not found'

else:
                    tabitem = automation.TabItemControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(tabitem,30)
                    if result==True:
                        return tabitem
                    else:
                        print 'control not found'

break
            if case('listitem'):
                if freeParameter<>"":
                    combobox = automation.ComboBoxControl(searchFromControl = wpfWindow,AutomationId=freeParameter)
                    left, top, right, bottom = combobox.BoundingRectangle
                    automation.Click(right-5,bottom-5,1)
                    listitem = automation.ListItemControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    return listitem
                else:
                    if controlName=="":
                        listitem = automation.ListItemControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                        return listitem
                    else:
                        listitem = automation.ListItemControl(searchFromControl = wpfWindow,Name=controlName)
                        return listitem
                break
            if case('text'):
                if controlName=="":
                    text = automation.TextControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(text,30)
                    if result==True:
                        return text
                    else:
                        print 'control not found'

else:
                    text = automation.TextControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(text,30)
                    if result==True:
                        return text
                    else:
                        print 'control not found'

break
            
            if case('image'):
                if controlName=="":
                    iamge = automation.ImageControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(image,30)
                    if result==True:
                        return iamge
                    else:
                        print 'control not found'

else:
                    iamge = automation.ImageControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(image,30)
                    if result==True:
                        return iamge
                    else:
                        print 'control not found'

break
            
            if case('menuitem'):
                if controlName=="":
                    menuitem = automation.MenuItemControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(menuitem,30)
                    if result==True:
                        return menuitem
                    else:
                        print 'control not found'

else:
                    menuitem = automation.MenuItemControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(menuitem,30)
                    if result==True:
                        return menuitem
                    else:
                        print 'control not found'

break

if case('list'):
                if controlName=="":
                    list = automation.ListControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(list,30)
                    if result==True:
                        return list
                    else:
                        print 'control not found'

else:
                    list = automation.ListControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(list,30)
                    if result==True:
                        return list
                    else:
                        print 'control not found'

break
            if case('progressbar'):
                if controlName=="":
                    progressbar = automation.ProgressBarControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(progressbar,30)
                    if result==True:
                        return progressbar
                    else:
                        print 'control not found'

else:
                    progressbar = automation.ProgressBarControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(progressbar,30)
                    if result==True:
                        return progressbar
                    else:
                        print 'control not found'
                break
            
            if case('slider'):
                if controlName=="":
                    slider = automation.SliderControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(slider,30)
                    if result==True:
                        return slider
                    else:
                        print 'control not found'
                    
                else:
                    slider = automation.SliderControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(slider,30)
                    if result==True:
                        return slider
                    else:
                        print 'control not found'

break
            
            if case('custom'):
                if controlName=="":
                    custom = automation.CustomControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(custom,30)
                    if result==True:
                        return custom
                    else:
                        print 'control not found'

else:
                    custom = automation.CustomControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(custom,30)
                    if result==True:
                        return custom
                    else:
                        print 'control not found'
                break
            
            if case('scrollbar'):
                if controlName=="":
                    scrollbar = automation.ScrollBarControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(scrollbar,30)
                    if result==True:
                        return scrollbar
                    else:
                        print 'control not found'
                else:
                    scrollbar = automation.ScrollBarControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(scrollbar,30)
                    if result==True:
                        return scrollbar
                    else:
                        print 'control not found'
                break

if case('tab'):
                if controlName=="":
                    tab = automation.TabControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(tab,30)
                    if result==True:
                        return tab
                    else:
                        print 'control not found'

else:
                    tab = automation.TabControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(tab,30)
                    if result==True:
                        return tab
                    else:
                        print 'control not found'

break

if case('treeitem'):
                if controlName=="":
                    treeitem = automation.TreeItemControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(treeitem,30)
                    if result==True:
                        return treeitem
                    else:
                        print 'control not found'

else:
                    treeitem = automation.TreeItemControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(treeitem,30)
                    if result==True:
                        return treeitem
                    else:
                        print 'control not found'
                break

if case('datagrid'):
                if controlName=="":
                    datagrid = automation.DataGridControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(datagrid,30)
                    if result==True:
                        return datagrid
                    else:
                        print 'control not found'

else:
                    datagrid = automation.DataGridControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(datagrid,30)
                    if result==True:
                        return datagrid
                    else:
                        print 'control not found'
                break
            
            if case('table'):
                if controlName=="":
                    table = automation.TableControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(table,30)
                    if result==True:
                        return table
                    else:
                        print 'control not found'

else:
                    table = automation.TableControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(table,30)
                    if result==True:
                        return table
                    else:
                        print 'control not found'

break
            
            if case('toolbar'):
                if controlName=="":
                    toolbar = automation.ToolBarControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(toolbar,30)
                    if result==True:
                        return toolbar
                    else:
                        print 'control not found'

else:
                    toolbar = automation.ToolBarControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(toolbar,30)
                    if result==True:
                        return toolbar
                    else:
                        print 'control not found'

break

if case('calendar'):
                if controlName=="":
                    calendar = automation.CalendarControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(calendar,30)
                    if result==True:
                        return calendar
                    else:
                        print 'control not found'

else:
                    calendar = automation.CalendarControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(calendar,30)
                    if result==True:
                        return calendar
                    else:
                        print 'control not found'
                break

if case('pane'):
                if controlName=="":
                    pane = automation.PaneControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(pane,30)
                    if result==True:
                        return pane
                    else:
                        print 'control not found'

else:
                    pane = automation.PaneControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(pane,30)
                    if result==True:
                        return pane
                    else:
                        print 'control not found'

break
            if case('headeritem'):
                if controlName=="":
                    headeritem = automation.HeaderItemControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(headeritem,30)
                    if result==True:
                        return headeritem
                    else:
                        print 'control not found'

else:
                    headeritem = automation.HeaderItemControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(headeritem,30)
                    if result==True:
                        return headeritem
                    else:
                        print 'control not found'

break
 
            if case(): # default, could also just omit condition or 'if True'
               print "something else:!"
                # No need to break here, it'll stop anyway

''' to run smoke test cases of a modality.
[param][in] Main Windows Name e.g PatientAdmin
[param][in] Control Type
[param][in] Control Name
[param][in] Control AutomationId
[param][in] FreeParameter e.g. when control is editbox, this value will be the input value, if the control is combox, the parameter is index
'''
def FindControl(mainWindow, controlType,controlName,controlAutomationId,freeParameter):

type = sys.getfilesystemencoding()       
    mainWindow = mainWindow.decode('gb2312')
    
    controlType=controlType.decode('utf-8').encode(type)
    
    controlName=controlName.decode('gb2312')
    
    controlAutomationId=controlAutomationId.decode('utf-8').encode(type)
    
    freeParameter=freeParameter.decode('gb2312')
    
    if mainWindow=="":
        wpfWindow=None
    else:
        wpfWindow=automation.WindowControl(Name=mainWindow)
    if controlName=="":
        controlName=None
    if controlAutomationId=="":
        controlAutomationId=None
    
    for case in switch(controlType.lower()):
            if case('button'):
                print controlName
                print controlAutomationId
                button=automation.ButtonControl(searchFromControl = wpfWindow,Name=controlName,AutomationId=controlAutomationId)
                result=automation.WaitForExist(button,30)
                if result==True:
                    button.Click()
                else:
                    print 'control not found'
                break
            if case('radiobutton'):
                if controlName=="":
                    radioButton=automation.RadioButtonControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(radioButton,30)
                    if result==True:
                        radioButton.Click()
                    else:
                        print 'control not found'

else:
                    radioButton=automation.RadioButtonControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(radioButton,30)
                    if result==True:
                        radioButton.Click()
                    else:
                        print 'control not found'
                break
            if case('edit'):
                if controlName=="":
                    edit = automation.EditControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(edit,30)
                    if result==True:
                        edit.SetValue(freeParameter)
                    else:
                        print 'control not found'
                   
                else:
                    edit = automation.EditControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(edit,30)
                    if result==True:
                        edit.SetValue(freeParameter)
                    else:
                        print 'control not found'
                break
            if case('checkbox'):
                if controlName=="":
                    checkbox = automation.CheckBoxControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(checkbox,30)
                    if result==True:
                        checkbox.Click()
                    else:
                        print 'control not found'
                    
                else:
                    checkbox = automation.CheckBoxControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(checkbox,30)
                    if result==True:
                        checkbox.Click()
                    else:
                        print 'control not found'

break
            if case('combobox'):
                if controlName=="":
                    combobox = automation.ComboBoxControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(combobox,30)
                    if result==True:
                        combobox.Select(freeParameter)
                    else:
                        print 'control not found'

else:
                    combobox = automation.ComboBoxControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(combobox,30)
                    if result==True:
                        combobox.Select(freeParameter)
                    else:
                        print 'control not found'
                    
                break
            if case('tabitem'):
                if controlName=="":
                    tabitem = automation.TabItemControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(tabitem,30)
                    if result==True:
                        tabitem.Click()
                    else:
                        print 'control not found'

else:
                    tabitem = automation.TabItemControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(tabitem,30)
                    if result==True:
                        tabitem.Click()
                    else:
                        print 'control not found'

break
            if case('listitem'):
                if freeParameter<>"":
                    combobox = automation.ComboBoxControl(searchFromControl = wpfWindow,AutomationId=freeParameter)
                    left, top, right, bottom = combobox.BoundingRectangle
                    automation.Click(right-5,bottom-5,1)
                    listitem = automation.ListItemControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    listitem.Click()
                else:
                    if controlName=="":
                        listitem = automation.ListItemControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                        listitem.Select()
                    else:
                        listitem = automation.ListItemControl(searchFromControl = wpfWindow,Name=controlName)
                        listitem.Select()
                break
            if case('text'):
                if controlName=="":
                    text = automation.TextControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(text,30)
                    if result==True:
                        text.Click()
                    else:
                        print 'control not found'

else:
                    text = automation.TextControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(text,30)
                    if result==True:
                        text.Click()
                    else:
                        print 'control not found'

break
            
            if case('image'):
                if controlName=="":
                    iamge = automation.ImageControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(image,30)
                    if result==True:
                        image.Click()
                    else:
                        print 'control not found'

else:
                    iamge = automation.ImageControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(image,30)
                    if result==True:
                        image.Click()
                    else:
                        print 'control not found'

break
            
            if case('menuitem'):
                if controlName=="":
                    menuitem = automation.MenuItemControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(menuitem,30)
                    if result==True:
                        menuitem.Click()
                    else:
                        print 'control not found'

else:
                    menuitem = automation.MenuItemControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(menuitem,30)
                    if result==True:
                        menuitem.Click()
                    else:
                        print 'control not found'

break

if case('list'):
                if controlName=="":
                    list = automation.ListControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(list,30)
                    if result==True:
                        list.Click()
                    else:
                        print 'control not found'

else:
                    list = automation.ListControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(list,30)
                    if result==True:
                        list.Click()
                    else:
                        print 'control not found'

break
            if case('progressbar'):
                if controlName=="":
                    progressbar = automation.ProgressBarControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(progressbar,30)
                    if result==True:
                        progressbar.Click()
                    else:
                        print 'control not found'

else:
                    progressbar = automation.ProgressBarControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(progressbar,30)
                    if result==True:
                        progressbar.Click()
                    else:
                        print 'control not found'
                break
            
            if case('slider'):
                if controlName=="":
                    slider = automation.SliderControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(slider,30)
                    if result==True:
                        slider.Click()
                    else:
                        print 'control not found'
                    
                else:
                    slider = automation.SliderControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(slider,30)
                    if result==True:
                        slider.Click()
                    else:
                        print 'control not found'

break
            
            if case('custom'):
                if controlName=="":
                    custom = automation.CustomControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(custom,30)
                    if result==True:
                        custom.Click()
                    else:
                        print 'control not found'

else:
                    custom = automation.CustomControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(custom,30)
                    if result==True:
                        custom.Click()
                    else:
                        print 'control not found'
                break
            
            if case('scrollbar'):
                if controlName=="":
                    scrollbar = automation.ScrollBarControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(scrollbar,30)
                    if result==True:
                        scrollbar.Click()
                    else:
                        print 'control not found'
                else:
                    scrollbar = automation.ScrollBarControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(scrollbar,30)
                    if result==True:
                        scrollbar.Click()
                    else:
                        print 'control not found'
                break

if case('tab'):
                if controlName=="":
                    tab = automation.TabControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(tab,30)
                    if result==True:
                        tab.Click()
                    else:
                        print 'control not found'

else:
                    tab = automation.TabControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(tab,30)
                    if result==True:
                        tab.Click()
                    else:
                        print 'control not found'

break

if case('treeitem'):
                if controlName=="":
                    treeitem = automation.TreeItemControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(treeitem,30)
                    if result==True:
                        treeitem.Click()
                    else:
                        print 'control not found'

else:
                    treeitem = automation.TreeItemControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(treeitem,30)
                    if result==True:
                        treeitem.Click()
                    else:
                        print 'control not found'
                break

if case('datagrid'):
                if controlName=="":
                    datagrid = automation.DataGridControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(datagrid,30)
                    if result==True:
                        datagrid.Click()
                    else:
                        print 'control not found'

else:
                    datagrid = automation.DataGridControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(datagrid,30)
                    if result==True:
                        datagrid.Click()
                    else:
                        print 'control not found'
                break
            
            if case('table'):
                if controlName=="":
                    table = automation.TableControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(table,30)
                    if result==True:
                        table.Click()
                    else:
                        print 'control not found'

else:
                    table = automation.TableControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(table,30)
                    if result==True:
                        table.Click()
                    else:
                        print 'control not found'

break
            
            if case('toolbar'):
                if controlName=="":
                    toolbar = automation.ToolBarControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(toolbar,30)
                    if result==True:
                        toolbar.Click()
                    else:
                        print 'control not found'

else:
                    toolbar = automation.ToolBarControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(toolbar,30)
                    if result==True:
                        toolbar.Click()
                    else:
                        print 'control not found'

break

if case('calendar'):
                if controlName=="":
                    calendar = automation.CalendarControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(calendar,30)
                    if result==True:
                        calendar.Click()
                    else:
                        print 'control not found'

else:
                    calendar = automation.CalendarControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(calendar,30)
                    if result==True:
                        calendar.Click()
                    else:
                        print 'control not found'
                break

if case('pane'):
                if controlName=="":
                    pane = automation.PaneControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(pane,30)
                    if result==True:
                        pane.Click()
                    else:
                        print 'control not found'

else:
                    pane = automation.PaneControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(pane,30)
                    if result==True:
                        pane.Click()
                    else:
                        print 'control not found'

break
            if case('headeritem'):
                if controlName=="":
                    headeritem = automation.HeaderItemControl(searchFromControl = wpfWindow,AutomationId=controlAutomationId)
                    result=automation.WaitForExist(headeritem,30)
                    if result==True:
                        headeritem.Click()
                    else:
                        print 'control not found'

else:
                    headeritem = automation.HeaderItemControl(searchFromControl = wpfWindow,Name=controlName)
                    result=automation.WaitForExist(headeritem,30)
                    if result==True:
                        headeritem.Click()
                    else:
                        print 'control not found'

break
 
            if case(): # default, could also just omit condition or 'if True'
               print "something else:!"
                # No need to break here, it'll stop anyway
    
 
    
if __name__ == '__main__':
    FindControl(sys.argv[1],sys.argv[2],sys.argv[3],sys.argv[4],sys.argv[5])

python+UIAutomation+libary的更多相关文章

  1. 使用python UIAutomation从QQ2017(v8.9)群界面获取所有群成员详细资料,

    首先安装pip install uiautomation, 运行本文代码.或者下载https://github.com/yinkaisheng/Python-UIAutomation-for-Wind ...

  2. 使用python uiautomation从钉钉网页版提取公司所有联系人信息

    之前写了一个提取QQ群里所有人信息的脚本 https://www.cnblogs.com/Yinkaisheng/p/5114932.html 今天写一个从钉钉网页版提取公司所有人通讯录的脚本,,本脚 ...

  3. python 常用模块(转载)

    转载地址:http://codeweblog.com/python-%e5%b8%b8%e7%94%a8%e6%a8%a1%e5%9d%97/ adodb:我们领导推荐的数据库连接组件bsddb3:B ...

  4. 常用的python模块

    http://tiankonghaikuo1000.blog.163.com/blog/static/18231597200812424255338/ adodb:我们领导推荐的数据库连接组件bsdd ...

  5. 开源自己用python封装的一个Windows GUI(UI Automation)自动化工具,支持MFC,Windows Forms,WPF,Metro,Qt

    首先,大家可以看下这个链接 Windows GUI自动化测试技术的比较和展望 . 这篇文章介绍了Windows中GUI自动化的三种技术:Windows API, MSAA - Microsoft Ac ...

  6. Python将是人工智能时代的最佳编程语言

    Python将是人工智能时代的最佳编程语言 移动互联网取代PC互联网领跑在互联网时代的最前沿,Android和iOS一度成为移动互联网应用平台的两大霸主,成为移动开发者首选的两门技术,HTML5以其跨 ...

  7. python 常库介绍及安装方法

    bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctypes:用来调用动态链接库DBUtils:数 ...

  8. python开发_常用的python模块及安装方法

    adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctype ...

  9. 常用的python模块及安装方法

    adodb:我们领导推荐的数据库连接组件 bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctyp ...

随机推荐

  1. cascade DecodeBBox层

    https://zhuanlan.zhihu.com/p/36095768 我的推断,第二第三阶段应该不是把所有anchor进行bounding box regression,然后再选取当前条件下的所 ...

  2. [转]《深入浅出MFC》– MFC程序的生死因果

    1.首先MFC程序需要哪些函数库? Windows C Runtime函数库 LIBC.LIB       C Runtime函数库的静态链接版本 MSVCRT.LIB     C Runtime函数 ...

  3. SSM命名规范框架

    文件名 作用 src 根目录,没什么好说的,下面有main和test. main 主要目录,可以放java代码和一些资源文件. java 存放我们的java代码,这个文件夹要使用Build Path ...

  4. data-ng-hide指令

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

  5. vim_preview_window

    *29.2*    The preview window When you edit code that contains a function call, you need to use the c ...

  6. 利用pt-query-digest分析MySQL慢查询

    1.用法与参数说明 pt-query-digest [OPTIONS] [FILES] [DSN] --create-review-table ##当使用--review参数把分析结果输出到表中时,如 ...

  7. 简明 ES6 模块

    简明 ES6 模块 1.什么是模块 模块就是一段代码,这段代码可以反复使用,经常单独写成一个文件,一旦加载会立即执行. 2.导出 导出有 2 种方式:命名导出和默认导出,分别用关键字export和ex ...

  8. vue.js中的slot

    vue.js 中的 slot 一.slot 的作用 调用组件的时候,对于数据,我们会用props将数据从父组件传至子组件.但是,如果从父组件到子组件,单纯是页面局部渲染的改变,slot会更合适. 二. ...

  9. 数组reduce方法以及高级技巧

    基本概念: reduce()方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终为一个值. reduce为数组中的每一个元素依次执行回调函数.不包括数组中被删除或从未赋值的元素,接受两 ...

  10. ABAP术语-Distribution Model

    Distribution Model 原文:http://www.cnblogs.com/qiangsheng/archive/2008/01/25/1052434.html Model that d ...