【问题标题】:How could I close with selenium a input window我怎么能用硒关闭输入窗口
【发布时间】:2022-01-25 04:39:15
【问题描述】:

我在 python 中进行 selenium 自动化,但遇到了问题。 要上传文件,我需要输入标签,但它只有在我点击“上传”按钮时才会激活,这个按钮会打开一个无法通过 selenium 管理的单独窗口(或者至少是我尝试过的方式)。当我close()驱动程序时,它们保持打开状态。 我需要上传几个文件,但是这个窗口锁定了与导航器的交互,因此驱动程序停止工作。

也许有一些方法可以在不打开选项卡的情况下激活输入字段。

这是窗户

我试过用 alt F4 键来打开窗口

我试过用 .close() 关闭 al

我试过不点击按钮,所以窗口不会打开,但输入标签不存在,除非我点击。

【问题讨论】:

  • 该对话框位于 DOM 之外,因此 Selenium 无法与之交互。您可以使用“机器人”框架单击它,或者您可以尝试单击输入,然后设置输入的值,并在同一输入上使用 .submit() 方法(提交表单的便捷方法)这是可能的那会关闭对话框吗?您可能会在帖子中包含标记和任何脚本。这将有助于我们发布更详细的解决方案。可能有一种方法可以更改事件处理程序以阻止上传文件对话框。

标签: javascript python html selenium geckodriver


【解决方案1】:

这是一个想法,它适用于我的单个文件,也许它会适用于您或激发您的新想法。 尝试这个: 首先,您需要自己的路径。

 home_path = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))

其次,您需要图像和名称的路径。比如说一个这样的列表:

file_details = ["dir_name", "file_name.jpg"]

然后,你写一个函数:

def upload_file(self, file_name):
    self.find_element(*LOCATOR_OF_INPUT).send_keys(file_name)

最后,你调用这个函数:

upload_file(os.path.join(home_path, os.path.join(*file_details)))

基本上,您不单击输入,而是将文件“发送”到输入。

祝你好运,希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2015-08-17
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    相关资源
    最近更新 更多