#! /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. Hashtable详细介绍(源码解析)和使用示例

    第1部分 Hashtable介绍 Hashtable 简介 和HashMap一样,Hashtable 也是一个散列表,它存储的内容是键值对(key-value)映射. Hashtable 继承于Dic ...

  2. java 线程状态图

  3. 【luogu P2936 [USACO09JAN]全流Total Flow】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2936 菜 #include <queue> #include <cstdio> #i ...

  4. 时空隧道FQ

    给你推荐一款海外网站加速工具,为科技工作者.海外归国人员.企业团队.外贸工作者提供海外上网服务,永久免费. 国外网址:https://chrome.google.com/webstore/detail ...

  5. ADO.NET 之 Entity Framework 基础

    Entity Framework(EF)是使用直接映射到应用程序中业务对象的对象模型于关系数据库进行交互.它没有将数据视为行和列的集合,而是将其视为强类型对象(成为实体)的集合. 术语:LinQ to ...

  6. 分享一个关于pthread线程栈在mm_struct里面的分布问题

    大家好,本人被下面这个问题困扰了一段时间,最近似乎找到了答案. 这里和大家分享一下,可能对有相同困惑的同学有点帮助,同时也请各位帮忙看看错漏的地方. 1================问题: 在使用p ...

  7. ECMAScript6

    ECMAScript6介绍 # ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现 # 有利于保证这门语言的开放性和中立性. # 标准在每年的 6 月份正 ...

  8. Spring-boot官方案例分析之log4j

    Spring-boot官方案例分析之log4j 运行单元测试分析: @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfigur ...

  9. Struts2 第二讲 -- Struts2的入门

    搭建struts2环境时,我们一般需要做以下几个步骤的工作: 第一步:创建javaweb工程(这个很废话有木有) 第二步:找到开发Struts2应用需要使用到的jar文件.(这个很白痴有没有) 到ht ...

  10. Golang学习笔记(一)

    一段基础的go语言代码解析 package main import "fmt" func main(){ fmt.Println("hello golang") ...