【问题标题】:Upload a file using WebDriver & PyWinAuto使用 WebDriver 和 PyWinAuto 上传文件
【发布时间】:2014-01-20 14:11:46
【问题描述】:

我有一个 python 脚本,它尝试将文件从我的 PC 上传到 Web 应用程序。 我通过 WebDriver 按浏览器中的特定上传按钮,然后打开一个 Win7 资源管理器窗口供我导航并选择要上传的所需文件。 如何使用 pywinauto 操作此窗口?

可选:这也可以在 linux 中完成(我想使用适当的库)吗?

这是我的示例代码:

wd.find_element_by_css_selector("img.editLecturesButtons.fromVideo").click()
#switch to the lightbox
wd.switch_to_frame(int("1"))
#hit upload
wd.find_element_by_xpath("//*[@id='fileUpload']").click()
#TODO
import os,pywinauto.application
file = os.path.normpath("C:\Users\me\Desktop\image.jpg")
....

【问题讨论】:

  • 大多数 Webdriver 用户发现将顺序更改为“将文件路径发送到输入元素”然后“单击上传/提交按钮”。你试过这个吗?它可以使事情变得更容易,因为它很难与文件上传管理器交互。
  • 我已经阅读过这个解决方案,但我认为它不适用于我。在 Web 应用程序中,我按下一个按钮并出现一个灯箱。该应用程序使用 Filepicker API 来上传和转换文件。我为特定按钮找到的 html 如下:

标签: python selenium pywinauto


【解决方案1】:

我同意 Mark,你应该试试 Webdriver 方法。对于 pywinauto,代码可能如下所示:

import pywinauto

pwa_app = pywinauto.application.Application()
w_handle = pywinauto.findwindows.find_windows(title=u'Open', class_name='#32770')[0]
window = pwa_app.window_(handle=w_handle)
ctrl = window['Name']
ctrl.SetText(file)
ctrl = window['OK']
ctrl.Click()

此解决方案仅适用于 Windows,因为 pywinauto 使用 win32 api。

【讨论】:

  • 我会尝试 pywinauto 方法,虽然生产代码会在 Ubuntu 上运行。
猜你喜欢
  • 2017-02-23
  • 2013-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-08
  • 2019-05-23
  • 1970-01-01
  • 2017-10-02
相关资源
最近更新 更多