gpt4 book ai didi

python - 在 Python 中使用 pywinauto 保存 Firefox 网页时出错

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:08 25 4
gpt4 key购买 nike

我刚刚为 Python 2.7.8 安装了 pywinauto-0.4.2(在 Windows 7 64 位机器上)。我正在尝试在 pywinauto 上引用的示例

SaveFromFirefox.py 程序的源代码(在上面的 URL 中给出)是:

from pywinauto.application import Application
import sys
import time
import os.path

if len(sys.argv) < 2:
print "please specify a web address to download"
sys.exit()

web_addresss = sys.argv[1]

if len(sys.argv) > 2:
outputfilename = sys.argv[2]
else:
outputfilename = web_addresss
outputfilename = outputfilename.replace('/', '')
outputfilename = outputfilename.replace('\\', '')
outputfilename = outputfilename.replace(':', '')


# start IE with a start URL of what was passed in
app = Application().start_(
r"c:\program files\Mozilla Firefox\Firefox.exe %s"% web_addresss)

# some pages are slow to open - so wait some seconds
time.sleep(4)

# mozilla is one of thos applications that use existing windows
# if they exist (at least on my machine!)
# so if we cannot find any window for that process
# - find the actual process
# - connect to it
if app.windows_():
mozilla = app.window_(title_re = ".*Mozilla Firefox")

else:
app = Application().connect_(title_re = ".*Mozilla Firefox")
mozilla = app.window_(title_re = ".*Mozilla Firefox")

# ie doesn't define it's menus as Menu's but actually as a toolbar!
print "No Menu's in FireFox:", mozilla.MenuItems()

# File -> Save As
mozilla.TypeKeys("%FA")
#ie.Toolbar3.PressButton("File")
app.SaveAs.FileNameEdit.SetEditText(outputfilename)

app.SaveAs.Save.CloseClick()

# if asked to overwrite say yes
if app.SaveAs.Yes.Exists():
app.SaveAs.Yes.CloseClick()

print "saved:", outputfilename

# File close tab or close
#(Firefox makes it easy for us having the same shortcut for both!
mozilla.TypeKeys("%FC")

当我尝试在命令提示符下执行文件时,它打开了 firefox 浏览器,然后打开了“另存为”对话框,但没有按下“保存”按钮。

相反,它给出了以下错误信息:

C:\Users\arun_m\Desktop>python2 SaveFromFirefox.py www.google.com
No Menu's in FireFox: []
Traceback (most recent call last):
File "SaveFromFirefox.py", line 51, in <module>
app.SaveAs.FileNameEdit.SetEditText(outputfilename)
File "C:\Python27\lib\site-packages\pywinauto\application.py", line 229, in __getattr__
ctrls = _resolve_control(self.criteria)
File "C:\Python27\lib\site-packages\pywinauto\application.py", line 795, in _resolve_control
raise e.original_exception
pywinauto.findbestmatch.MatchError: Could not find 'FileNameEdit' in '['', u'ShellView', u'Address: D:\\My_Dox_backup\\Work\\Automation Factory\\Selenium\\Sikuli', u'DUIViewWndClas
sName', 'Toolbar4', u'ShellViewSHELLDLL_DefView', u'Namespace Tree Control', u'Breadcrumb Parent', u'Address Band Root', u'Tree ViewTreeView', u'UniversalSearchBand', u'SearchEditB
oxWrapperClass', 'ComboBox2', 'Progress', 'ComboBox0', 'ComboBox1', 'Toolbar2', u'CtrlNotifySink', u'ScrollBar', '20', '21', '22', '23', u'FloatNotifySink0', 'ComboBox', u'FloatNot
ifySink2', u'TravelBand', u'WorkerW', '1', '0', '3', '2', '5', '4', '7', '6', u'NamespaceTreeControl', '8', '12', 'TreeView', 'Toolbar1', u'CancelButton', 'Toolbar', '11', u'Search
Box', 'ReBar', 'Edit', 'Button', u'CtrlNotifySink0', u'CtrlNotifySink1', u'CtrlNotifySink2', 'Toolbar3', '9', 'Button1', 'Button0', u'FloatNotifySink', u'DirectUIHWND3', u'&SaveBu
tton', u'DirectUIHWND', '10', '13', u'CancelScrollBar', '15', '14', '17', 'Button2', '19', '18', u'Tree View', '16', u'SHELLDLL_DefView', u'Namespace Tree ControlNamespaceTreeContr
ol', u'&Save', u'Address: D:\\My_Dox_backup\\Work\\Automation Factory\\Selenium\\SikuliToolbar', 'Toolbar0', u'FloatNotifySink1', u'DirectUIHWND1', u'DirectUIHWND0', u'Cancel', u'D
irectUIHWND2']'

出了什么问题?

最佳答案

改变

app.SaveAs.FileNameEdit.SetEditText(outputfilename)

app.SaveAs.Edit.SetEditText(outputfilename)

它适用于 Firefox 34.0.5。我也改变了路径

app = application.Application().start_(
r"C:\Program Files (x86)\Mozilla Firefox\firefox.exe %s"% web_addresss)

这是在 Win7 x64 + Python 2.6.6(32 位)上。

它不起作用的主要原因是与 WinXP 相比,Win7 中的标准打开/保存对话框发生了变化。可能这个例子是几年前在 WinXP 上写的。

关于python - 在 Python 中使用 pywinauto 保存 Firefox 网页时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27544109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com