#! /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. 2017.9.5 Java知识点总结

    1.*程序的数据操作往往都在内存中操作的,也就是说数据运算都在内存中完成. 2.*什么是变量? --变量就是内存中的一块用来存放数据的存储单元. --变量中的值可变 --我们通过变量名就可以找到内存中 ...

  2. javascript dom 操作详解 js加强

    js加强操作实现代码. 1 .文档里的每个节点都有属性 nodeName . nodeValue . nodeType nodeName 文本节点的的节点名是 #text , nodeName 是只读 ...

  3. HTML5之转动的轮子

    <!doctype html><html> <head></head> <body> <canvas width="1000 ...

  4. 课时89.CSS三大特性练习(理解)

    给大家补充一点:通配符是不参与权重计算的,因为通配符的权重是0,而权重只计算id,类,标签,将来还有一种,到后面说. 练习1 直接选中和间接选中的,必然要听直接选中的. 练习2 直接选中一共有两个,直 ...

  5. iOS 语言国际化配置

    所谓的iOS 国际化,就是根据系统不同的语言自动切换. 首先,如图:   创建一个.strings文件,以“Localizable.strings”为文件名:   创建完之后,在XCode的右边勾选自 ...

  6. 统计iOS产品不同渠道的下载量

    如何统计iOS产品不同渠道的下载量? 一.前言 在开发过程中,Android可能会打出来很多的包,用于标识不同的商店下载量.原来觉得苹果只有一个商店:AppStore,如何做出不同来源的统计呢?本篇文 ...

  7. sqlachemy详解

    实习期老大让我学Python...学了很久了好吗,不过确实对其中的一些原理性的东西还不够深入. 比如今天要说的sqlachemy,结合网上做些总结吧 ORM 全称 Object Relational ...

  8. js实现区县联动

    1. 引入区县联动函数如下,将provinceList中数据改为需要联动的数据信息 var addressInit = function(_cmbProvince, _cmbCity, _cmbAre ...

  9. Lavavel5.5源代码 - Pipeline

    <?php class Pipeline { protected $passable; protected $pipes = []; protected $method = 'handle'; ...

  10. typecho博客组插件:openSug.js百度搜索框下拉提示免费代码

      Typecho候选搜索增强插件:安装openSug插件即可获得带有“搜索框提示”功能的搜索框,让Typecho搜索更便捷! 支持百度.谷歌.雅虎.Yandex.360好搜.UC神马.酷狗.优酷.淘 ...