如何让 Selenium 从网页打开的文件资源管理器中选择文件

问题描述

好的,所以这有点难以解释,所以我将从单词开始,然后进入一些代码。我正在使用名为 airtable 的数据库软件,它不允许我通过 API 上传图像。但是,用户可以通过表单提交上传图像,这会在基础中创建新记录。我通过使用 Selenium 并打开网络表单,然后以用户身份输入数据来解决缺乏自动上传的问题。我遇到的问题是当我尝试上传文件时。我无法将文件路径发送到附件空间,似乎我被迫与 Windows 文件资源管理器弹出窗口进行交互。我已阅读 this 问题的答案,并尝试使用 win32com、autoit 和 selenium 切换到窗口函数。一切都没有明显的结果。这就是这里的情况,现在我将展示一个我正在尝试做的事情的例子。

首先我有这个代码,它打开下面看到的表单。 Url 和 driver_path 已定义,但此处未显示

driver = webdriver.Firefox(executable_path=driver_path)
driver.get(url)

Image of the form as it opens initially

现在我尝试在此处传递文件路径,但似乎没有任何对象可通过键盘访问。相反,我使用这个简短的代码来点击按钮

attach = driver.find_element_by_xpath("//div[@class='fsp-drop-area']")
attach.click()

按下此按钮会在网页中打开一个新窗口,如下所示:Image of form after click

同样,我试图在这里传递一个文件路径,但它似乎不是键盘可寻址的。作为与此表单交互的用户,我可以拖放文件,或单击按钮打开 Windows 文件资源管理器。第二个选项是下面代码的作用。

attach = driver.find_element_by_xpath("//div[@class='fsp-drop-area']")
attach.click()

现在我只剩下这个:Image of form with windows explorer open 并且我无法从 python 与它交互。我似乎无法解决它以找出底部文件搜索框的名称,尽管文件搜索栏在打开时突出显示,但我无法向它发送按键。在脚本的前面,我保存了我现在尝试上传的照片,所以我知道它的完整文件路径,如果我可以访问那个框,就可以搜索它。我没有尝试过以图形方式进行,因为此代码将放在几台计算机上,并且它们的显示器不同。

非常欢迎任何帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)