python - 在 Adobe 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()
解决方案
推荐阅读
- django - 获取 Wagtail 页面模型的随机对象,但不是当前对象
- javascript - 删除内容时返回原始输入类
- python - 测试失败:“类型”对象不可迭代
- node.js - 如何将 Gatsby 与 NodeJs Express 后端集成
- google-sheets - 如何用引号、逗号和括号连接单个文本中的列?
- mysql - 在创建 MySQL 表时在 2 列上添加约束时出错
- c++ - FFmpeg 原始视频大小参数
- javascript - 为了在视图中获取 API 数据,需要采用哪个值?
- c++ - 如何使用 std::lower_bound 在没有第二个对象的情况下比较对象变量
- c# - 检查字符串是否包含某个单词(但不是全部)