2015-04-17 138 views
2

我在python和pywinauto中使用了新的代码,我需要在Chrome中使用pywinauto和Chrome_widgetWin_1开始演示,在我运行一个程序之后--Chrome启动了,但是只显示了一个新标签,演示文稿没有出现。
程序的第一部分调用pdf一个HTML演示文稿并添加一个Chrome的路径,第二部分是调用一些Chrome小部件来开始演示,但显然它不起作用。
我不知道可能是什么问题,因为我到目前为止还没有在那里工作,在互联网上没有任何帮助。
任何人都可以有任何经验吗?我明白任何形式的帮助,TNX :)Pywinauto不响应

pdf = "\\CIT_presentation.pdf"   
htmlpres = "file:///...template_cit2.html#1"  
adobe = "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe"  
chrome = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"  
import xml.etree.ElementTree as ET  
from suds.client import Client 
class Presentation:  
    def start(self):  
     from pywinauto import application  
     app = application.Application()  
     app.start_(chrome)  
     pwa_app = pywinauto.application.Application()  
     while True:  
      try:  
       w_handle =  pywinauto.findwindows.find_windows(class_name='Chrome_WidgetWin_1')[0]  
       window = pwa_app.window_(handle=w_handle)  
       window.TypeKeys(htmlpres, with_spaces = True)  
       window.TypeKeys("~")  
       break  
      except:  
       pass 
+0

这是整个代码? 我无法看到您尝试使用该类的位置,只能在您定义的位置。 – Henrik

+0

我无法理解您尝试实现的目标。你能否在你的问题中添加你试图自动化的步骤(我没有得到关于这个部件的部分)? – LittlePanda

+0

不,它只是代码的一部分,因为在这个类中有一个与我一起工作的Nao机器人的函数,这对于这个问题并不重要。在这个定义之后,我只是把它叫做Presentation()。start() – Silly

回答

1

试图了解这个问题。首先让我们把这些代码能够实际运行:

import pywinauto 
import time 
import sys 

htmlpres = "zcuba.dk/2014" 

chrome = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" 

class Presentation: 
    def __init__(self): 
     pass 

    def start(self):  
     app = pywinauto.application.Application()  
     app.start_(chrome)  
     pwa_app = pywinauto.application.Application()  
     while True:  
      try:  
       w_handle = pywinauto.findwindows.find_windows(class_name='Chrome_WidgetWin_1')[0] 
       window = pwa_app.window_(handle=w_handle) 
       window.TypeKeys(htmlpres, with_spaces = True)  
       window.TypeKeys("~") 
       window.TypeKeys("{F11}") 
       break; 
      except: 
       e = sys.exc_info()[0] 
       print e 
       time.sleep(1) 

p = Presentation() 
p.start() 

现在在这里工作,我不能找到任何错误...对不起

下一个调试版本的代码,它看起来不像您的原始版本,并有很多输出,以帮助您查明您的问题!

import pywinauto 
import time 
import sys 

htmlpres = "zcuba.dk/2014" 

chrome = r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe' 

class Presentation: 
    def __init__(self): 
     pass 

    def start(self): 
     print "starting the pywinauto application object, by default construction" 
     pwa_app = pywinauto.application.Application() 

     print "start chrome, via pywinauto, without parameters, for later interaction" 
     pwa_app.start_(chrome) 

     print "now I'll attempt to communicate with the chrome instance" 
     while True:  
      try: 
       print "find the first windows application, that has an open window, with the class name 'Chrome_WidgetWin_1' (typically a chrome tab/window instance)" 
       w_handle =  pywinauto.findwindows.find_windows(class_name='Chrome_WidgetWin_1')[0] 
       print "assigned a handle to the applications window:" 
       print "handle is: " + str(w_handle) 
       print "use the handle to create a window automation object" 
       window = pwa_app.window_(handle=w_handle) 
       print "window object created:" 
       print window 

       print "Now, attempt to simulate keyboard, and write the address in the chrome window (wherever focus is - we assume it is in the address bar - but some extensions can change this behaviour)" 
       window.TypeKeys(htmlpres, with_spaces = True)  
       print "pressing enter to start the search for the address entered" 
       window.TypeKeys("{ENTER}") 
       print "pressing F11 to go for fullscreen - it is a presentation ;)" 
       window.TypeKeys("{F11}") 
       print "yay, we are done :)" 
       break; 
      except: 
       print "Oh, no, an Exception, (something went wrong):" 
       e = sys.exc_info()[0] 

       print e 
       time.sleep(1) 

       print "will now retry_________________________________________" 

print "build presentation object" 
p = Presentation()  

print "start presentation" 
p.start() 
+0

测试与Python 2.7.8 – Henrik

+0

我试了,它运行,但它和我的一样 - 铬开始,演示没有显示,但现在程序写我“” – Silly

+0

,我有python 2.7 – Silly

1

也许你混合2个应用对象:apppwa_appapp涉及到启动的chrome.exe进程,pwa_app没有连接到任何进程,它只是一个来自SWAPY工具的“复制粘贴”。

只需删除行pwa_app = pywinauto.application.Application()并用app替换所有pwa_app对象。

为了以防万一...您需要32位Python 2.7。

+0

在这种情况下,当我删除pwa_app,它是一样的 - 演示文稿不显示并给我写错误 Silly

+0

这是另一个例外。它发生在哪一行?添加'导入追踪; traceback.print_exc()'在异常处理代码中。 –

+0

调试完成后,问题可以在“window = app.window_(handle = w_handle)”的行中,这是TRY异常,并且在这行之后,程序跳到EXCEPT部分,所以应该执行演示的行“window.TypeKeys (htmlpres,with_spaces = True)“不运行... – Silly

0

瓦西里---是的,现在它打印一些错误

<type 'exceptions.TypeError'>  
File "C:/.../Program.py", line 23, in start  
    window = app.window_(handle=w_handle) 
File "C:\Python27\lib\site-packages\pywinauto\application.py", line 400, in window_ 
    **kwargs) 
File "C:\Python27\lib\site-packages\pywinauto\application.py", line 290, in _wait_for_function_success  
    return func(*args, ** kwargs) 
File "C:\Python27\lib\site-packages\pywinauto\findwindows.py", line 60, in find_window 
    windows = find_windows(**kwargs)  
TypeError: find_windows() got an unexpected keyword argument 'handle' 
+0

这很奇怪。函数'find_windows()'具有'handle'参数。请参阅https://code.google.com/p/pywinauto/source/browse/pywinauto/findwindows.py您使用的是哪个版本的pywinauto? 0.4.2? –

+0

为了确保存在'handle',请转到'C:\ Python27 \ lib \ site-packages \ pywinauto \ findwindows.py'并查看'find_windows'。 –

+0

你能使它工作吗? –