如何使用pywinauto

时间:2017-05-26 13:47:50

标签: python python-2.7 automation pywinauto

我正在尝试编写一个简单的脚本,将文件内的文本增加+1,然后保存文件,同时将文件名增加+1。

基本上是这样的:

这是文字1

保存为:File1.txt

这是文字2

保存为:File2.txt

等等。我已经用记事本程序得到了我的脚本但是我无法找到一种方法来做到这一点,而无需为每个文件打开记事本。 我已经玩过尝试连接到进程ID等等但是我只用了大约一个月的时间编程,所以我对这个概念的时间很糟糕。

#!/usr/bin/env python

from pywinauto.application import Application
b = int(raw_input("Where do you want to start? >"))
a = int(raw_input("How Many Labels do you need? >"))

def make_labels(a, b):

    app = Application().start("notepad.exe")
    app.UntitledNotepad.edit1.SetText("This is me typing %r" % b)
    app.UntitledNotepad.MenuSelect("File -> SaveAs")
    #app.SaveAs.ComboBox5.Select("UTF-8")
    app.SaveAs.edit1.SetText("Test_File%r.txt" % b)
    app.SaveAs.Save.Click()
    app.UntitledNotepad.TypeKeys("%FX")
    b = b + 1
    return b



while b < a:
    b = make_labels(a, b)

我们非常感谢任何有关如何仅使用一个记事本实例来解决这个问题的帮助。

更新

好的,我想我已经取得了一些进展。我不知道你可以通过程序名称识别它,所以我改变了它,现在它使用相同的窗口。然而,我的新问题是它会达到这样的程度,即它会再次将内容增加+1,但之后无法打开保存选项:

#!/usr/bin/env python

from pywinauto.application import Application
import time

b = int(raw_input("Where do you want to start? >"))
a = int(raw_input("How Many Labels do you need? >"))
app = Application().start("notepad.exe")

def make_labels(b, app): 

    #app = Application().start("notepad.exe")
    app.Notepad.edit1.SetText("This is me typing %r" % b)
    app.Notepad.MenuSelect("File -> SaveAs")
    app.SaveAs.edit1.SetText("Test_File%r.txt" % b)
    app.SaveAs.Save.Click()

    #app.Notepad.TypeKeys("%FX")
    b = b + 1
    return b



while b < a:
     b = make_labels(b, app)

3 个答案:

答案 0 :(得分:0)

写两行

app.SaveAs.Save.Click()

似乎解决问题

#!/usr/bin/env python

from pywinauto.application import Application
b = int(raw_input("Where do you want to start? >"))
a = int(raw_input("How Many Labels do you need? >"))

def make_labels(a, b):

    app = Application().start("notepad.exe")
    app.UntitledNotepad.edit1.SetText("This is me typing %r" % b)
    app.UntitledNotepad.MenuSelect("File -> SaveAs")
    #app.SaveAs.ComboBox5.Select("UTF-8")
    app.SaveAs.edit1.SetText("Test_File%r.txt" % b)
    app.SaveAs.Save.Click()
    app.SaveAs.Save.Click()
    app.UntitledNotepad.TypeKeys("%FX")
    b = b + 1
    return b

while b < a:
    b = make_labels(a, b)

然后在你的函数make_labels中的参数&#39; a&#39;是没用的。

答案 1 :(得分:0)

我不确定您是否真的想要显示记事本窗口,或者您是否只对使用任何作品编写文件感兴趣,并且这是您找到的第一种方法。如果是后者,则您不需要pywinauto来保存多个文件。 <{1}}和open可以正常使用。

write

答案 2 :(得分:0)

好的!

所以我找到了解决问题的另一种方法。而不是使用菜单选择选项,就好像一个人用他们的鼠标点击它,而是尝试了所有键盘快捷方式,它工作:

Adam | Physics

这使用键盘输入来保存文件,然后打开一个新文件(在同一个应用程序实例下)并重复该过程。

我希望将来能有所帮助。