首页 > 解决方案 > 在 Adob​​e Acrobat Reader DC 中找不到“选择文件”按钮

问题描述

我目前正在尝试让我的 pywinauto 程序导航到“选择文件以转换为 PDF”按钮,然后在 MenuBar 中转到“文件”->“创建 PDF”。我已经成功地使用按钮进入页面,但是当我使用打印控件标识符时

app.AdobeAcrobatReaderDC.print_control_identifiers()

我明白了

Dialog - 'Adobe Acrobat Reader DC (32-bit)'    (L30, T30, R1051, B1010)
[u'Adobe Acrobat Reader DC (32-bit)Dialog', u'Adobe Acrobat Reader DC (32-bit)', u'Dialog']
child_window(title="Adobe Acrobat Reader DC (32-bit)", control_type="Window")
   | 
   | Pane - 'TopTabBarContainerViewForDocs'    (L38, T81, R1043, B118)
   | ['Pane', u'TopTabBarContainerViewForDocsPane', u'TopTabBarContainerViewForDocs', u'Pane1', u'Pane0']
   | child_window(title="TopTabBarContainerViewForDocs", control_type="Pane")
   |    | 
   |    | Pane - 'AVHomeSearchBarView'    (L440, T85, R680, B113)
   |    | [u'AVHomeSearchBarView', u'AVHomeSearchBarViewPane', 'Pane2']
   |    | child_window(title="AVHomeSearchBarView", control_type="Pane")
   |    |    | 
   |    |    | Edit - ''    (L468, T89, R653, B110)
   |    |    | [u'Edit1', u'Edit0', 'Edit']
   |    | 
   |    | Pane - 'AVUITopRightCommandCluster'    (L680, T82, R1043, B117)
   |    | [u'AVUITopRightCommandClusterPane', u'AVUITopRightCommandCluster', 'Pane3']
   |    | child_window(title="AVUITopRightCommandCluster", control_type="Pane")
   |    | 
   |    | Pane - 'AVTabLinksContainerViewForDocs'    (L38, T81, R423, B118)
   |    | [u'AVTabLinksContainerViewForDocsPane', 'Pane4', u'AVTabLinksContainerViewForDocs']
   |    | child_window(title="AVTabLinksContainerViewForDocs", control_type="Pane")
   | 
   | Pane - 'AVFlipContainerView'    (L38, T118, R1043, B1002)
   | [u'AVFlipContainerView0', u'AVFlipContainerView1', u'AVFlipContainerViewPane0', u'AVFlipContainerViewPane1', u'AVFlipContainerView', u'AVFlipContainerViewPane', 'Pane5']
   | child_window(title="AVFlipContainerView", control_type="Pane")
   |    | 
   |    | Pane - 'AVDocumentMainView'    (L38, T118, R1043, B1002)
   |    | [u'AVDocumentMainView', u'AVDocumentMainViewPane', 'Pane6']
   |    | child_window(title="AVDocumentMainView", control_type="Pane")
   |    |    | 
   |    |    | Pane - 'AVActiveAppBarView'    (L38, T118, R1043, B164)
   |    |    | [u'AVActiveAppBarViewPane', u'AVActiveAppBarView', 'Pane7']
   |    |    | child_window(title="AVActiveAppBarView", control_type="Pane")
   |    |    | 
   |    |    | Pane - 'AVTaskPaneHostView'    (L996, T165, R1043, B1002)
   |    |    | [u'AVTaskPaneHostView', u'AVTaskPaneHostViewPane', 'Pane8']
   |    |    | child_window(title="AVTaskPaneHostView", control_type="Pane")
   |    |    |    | 
   |    |    |    | Pane - 'AVNarrowScrollView'    (L997, T165, R1043, B1002)
   |    |    |    | [u'AVNarrowScrollViewPane', u'AVNarrowScrollView', 'Pane9']
   |    |    |    | child_window(title="AVNarrowScrollView", control_type="Pane")
   |    |    |    |    | 
   |    |    |    |    | Pane - 'AVTableContainerView'    (L997, T165, R1043, B1002)
   |    |    |    |    | [u'AVTableContainerView', u'AVTableContainerViewPane', 'Pane10']
   |    |    |    |    | child_window(title="AVTableContainerView", control_type="Pane")
   |    |    | 
   |    |    | Pane - 'AVFlipContainerView'    (L38, T165, R996, B1002)
   |    |    | [u'AVFlipContainerView2', 'Pane11', u'AVFlipContainerViewPane2']
   |    |    | child_window(title="AVFlipContainerView", control_type="Pane")
   |    |    |    | 
   |    |    |    | Pane - 'AppsCefView'    (L38, T165, R996, B1002)
   |    |    |    | [u'AppsCefView', u'AppsCefViewPane', 'Pane12']
   |    |    |    | child_window(title="AppsCefView", control_type="Pane")
   | 
   | TitleBar - ''    (L54, T33, R1043, B61)
   | ['TitleBar']
   |    | 
   |    | Menu - 'System'    (L38, T38, R60, B60)
   |    | [u'System0', u'System1', u'System', u'Menu', u'SystemMenu', u'Menu0', u'Menu1']
   |    | child_window(title="System", auto_id="MenuBar", control_type="MenuBar")
   |    |    | 
   |    |    | MenuItem - 'System'    (L38, T38, R60, B60)
   |    |    | [u'System2', u'MenuItem0', u'MenuItem', u'MenuItem1', u'SystemMenuItem']
   |    |    | child_window(title="System", control_type="MenuItem")
   |    | 
   |    | Button - 'Minimize'    (L904, T31, R951, B61)
   |    | [u'Minimize', u'Button1', u'MinimizeButton', 'Button', u'Button0']
   |    | child_window(title="Minimize", control_type="Button")
   |    | 
   |    | Button - 'Maximize'    (L951, T31, R997, B61)
   |    | [u'Maximize', u'MaximizeButton', 'Button2']
   |    | child_window(title="Maximize", control_type="Button")
   |    | 
   |    | Button - 'Close'    (L997, T31, R1044, B61)
   |    | [u'CloseButton', u'Close', 'Button3']
   |    | child_window(title="Close", control_type="Button")
   | 
   | Menu - 'Application'    (L38, T61, R1043, B80)
   | [u'Application', u'ApplicationMenu', u'Menu2']
   | child_window(title="Application", auto_id="MenuBar", control_type="MenuBar")
   |    | 
   |    | MenuItem - 'File'    (L38, T61, R70, B80)
   |    | [u'FileMenuItem', u'File', u'MenuItem2']
   |    | child_window(title="File", control_type="MenuItem")
   |    | 
   |    | MenuItem - 'Edit'    (L70, T61, R104, B80)
   |    | [u'Edit2', u'EditMenuItem', u'MenuItem3']
   |    | child_window(title="Edit", control_type="MenuItem")
   |    | 
   |    | MenuItem - 'View'    (L104, T61, R143, B80)
   |    | [u'ViewMenuItem', u'MenuItem4', u'View']
   |    | child_window(title="View", control_type="MenuItem")
   |    | 
   |    | MenuItem - 'Sign'    (L143, T61, R180, B80)
   |    | [u'Sign', u'MenuItem5', u'SignMenuItem']
   |    | child_window(title="Sign", control_type="MenuItem")
   |    | 
   |    | MenuItem - 'Window'    (L180, T61, R238, B80)
   |    | [u'MenuItem6', u'Window', u'WindowMenuItem']
   |    | child_window(title="Window", control_type="MenuItem")
   |    | 
   |    | MenuItem - 'Help'    (L238, T61, R277, B80)
   |    | [u'Help', u'MenuItem7', u'HelpMenuItem']
   |    | child_window(title="Help", control_type="MenuItem")

这似乎没有显示“选择文件”按钮。我觉得好像我需要将 print_control_identifiers() 方法指向其他地方才能给我正确的答案,但是在查看文档/在线论坛后,我看不到使用了不同的方法。请参阅下面的代码:

def acrobat_interaction():
    # mouse movement
    pyautogui.moveTo(random.randrange(0, width), random.randrange(0, height), 2)

    # Start new process - link Application to Acrobat
    if process_exists("AcroRD32.exe"):
        print("Acrobat session already exists. Connecting...")
        app = Application(backend="uia").connect(
            path=r"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRD32.exe")
        print("Connected to existing Acrobat session.")
    else:
        print("Acrobat process does not exist. Creating a new one...")
        app = Application(backend="uia").start("C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRD32.exe",
                                               timeout=20)
        time.sleep(2)
        app.connect(title='Adobe Acrobat Reader DC (32-bit)')
        print("Launched new Acrobat session.")

    pyautogui.moveTo(random.randrange(0, width), random.randrange(0, height), 2)

    dlg = app.AdobeAcrobatReaderDC

    actionable_dlg = dlg.wait('visible')

    pyautogui.moveTo(random.randrange(0, width), random.randrange(0, height), 2)

    adobe = app.window(class_name='AcrobatSDIWindow')
    app_menu = adobe.child_window(title="Application", control_type="MenuBar")
    app_menu.child_window(title="File").expand()
    file_menu = adobe.child_window(title="File", control_type="Menu", found_index=0)
    file_menu.child_window(title="Create PDF").click_input()
    app.AdobeAcrobatReaderDC.print_control_identifiers()

标签: pythonadobepywinautoreader

解决方案


推荐阅读