使用pywinauto的Internet Explorer的ActiveX对话框控件

时间:2017-07-04 13:39:19

标签: pywinauto

我想控制Internet Explorer的ActiveX启动的对话框。

enter image description here

app = Application(backend="uia").connect(title = "감염병웹통계시스템 - Internet Explorer")
tb = app.window(class_name = "IEFrame").window(class_name = "AfxOleControl90su").window(class_name = "XTPToolBar")
tb.파일저장.click()

使用此代码,我可以打开对话框。但我无法处理它。 我发现Internet Explorer正在使用2个进程。

原始Internet Explorer低于64位,对话框位于32位Internet Explorer下。 所以我决定创建新的Application并连接到32位进程。

app2 = Application(backend="uia").connect(path=r"C:\Program Files (x86)\Internet Explorer\iexplore.exe", title = "감염병웹통계시스템 - Internet Explorer")
dialog = app2.window_(best_match = "Dialog")
dialog.print_control_identifiers()

但是没有print_control_identifiers的输出。什么都没发生。 当我取消对话框时,终端显示此错误消息。

(oh-crawler) c:\work\oh-crawler>python crawler2.py
Traceback (most recent call last):
  File "C:\Anaconda3\envs\oh-crawler\lib\site-packages\pywinauto\application.py", line 243, in __resolve_control
    criteria)
  File "C:\Anaconda3\envs\oh-crawler\lib\site-packages\pywinauto\timings.py", line 424, in wait_until_passes
    raise err
pywinauto.timings.TimeoutError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "crawler2.py", line 18, in <module>
    dialog.print_control_identifiers()
  File "C:\Anaconda3\envs\oh-crawler\lib\site-packages\pywinauto\application.py", line 573, in print_control_identifiers
    this_ctrl = self.__resolve_control(self.criteria)[-1]
  File "C:\Anaconda3\envs\oh-crawler\lib\site-packages\pywinauto\application.py", line 246, in __resolve_control
    raise e.original_exception
  File "C:\Anaconda3\envs\oh-crawler\lib\site-packages\pywinauto\timings.py", line 402, in wait_until_passes
    func_val = func(*args)
  File "C:\Anaconda3\envs\oh-crawler\lib\site-packages\pywinauto\application.py", line 188, in __get_ctrl
    dialog = self.backend.generic_wrapper_class(findwindows.find_element(**criteria[0]))
  File "C:\Anaconda3\envs\oh-crawler\lib\site-packages\pywinauto\findwindows.py", line 87, in find_element
    raise ElementNotFoundError(kwargs)
pywinauto.findwindows.ElementNotFoundError: {'best_match': 'Dialog', 'backend': 'uia', 'process': 5244}

我认为有两种可能性。首先,我错误地连接到该过程。第二,我错误地附上了一个对话窗口。

以下是我从不同类型的间谍工具中获得的信息。 enter image description here

如何控制此对话框?

=======================================

2017年7月5日 我将inpect.exe的模式更改为UI自动化并再次捕获。 enter image description here

저means表示&#34;保存&#34; 这是ActiveX程序文件夹。 enter image description here

可以自定义控件吗?因为comtype限制,所以无法处理此控件吗?

0 个答案:

没有答案