【问题标题】:File Upload dialog is not picked by seleniumselenium 未选择文件上传对话框
【发布时间】:2023-03-07 10:14:01
【问题描述】:

我正在尝试在 python 中编写基于硒的测试。 在这里,我正在尝试为第一个文本框选择一个文件(PGP Private Key)

请注意 - 1. 文本框(PGP Private Key)是只读的(我无法通过键盘输入任何文本) 2. self.driver.send_keys(file) 不工作。

正如我在注释中提到的,由于send_keys() 不起作用,我正在尝试获取“文件上传”对话框的句柄。 但是self.driver.window_handles只返回一个句柄。那是主窗口。

如何上传文件?这两种解决方案(send_key 或窗口句柄)中的任何一种都可以。

请注意,我使用的是 firefox 28 和 selenium 2.41.0

【问题讨论】:

  • 您能否提供HTML 输入字段的PGP Private Key 代码?
  • 有两行 - <input id="PGPPrivateKey" class="col-lg-2 ng-pristine ng-invalid ng-invalid-required" type="text" readonly="" required="" ng-model="privateKey"></input> <input id="selectKeys" class="ng-pristine ng-valid" type="file" name="pgpPrivateKeyFileData" ng-model="pgpKeyFile"></input>
  • 你不应该处理<input type="text">元素,而是<input type="file">
  • 请注意,Firefox 28 已经过时了。您应该更新到当前版本 49.0.1。您的问题与 Firebug 有多大关系?

标签: python selenium firefox firebug inspector


【解决方案1】:

一般情况下,这段代码应该可以工作:

driver.find_element_by_xpath("//input[@id='selectKeys']").send_keys(path_to_file)

【讨论】:

  • 不幸的是没有工作。我得到了 ElementNotVisibleException。
  • 在执行我的字符串之前你是否点击了Select Private Key按钮?
  • 没有。我不这样做。我应该吗?
  • 没有。我只是猜测是什么让输入字段不可见
  • 另一个猜测......你可以在发送文件路径之前尝试这一行:driver.execute_script('document.getElementById("selectKeys").style.visibility="visible";')。结果一样吗?
猜你喜欢
  • 2017-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-09
  • 1970-01-01
  • 2021-08-31
  • 2012-02-16
  • 2017-10-21
相关资源
最近更新 更多