【问题标题】:Handle browser dialog window without focus处理没有焦点的浏览器对话框窗口
【发布时间】:2018-04-10 07:37:41
【问题描述】:

我有一个基于Selenium WebDriver 的脚本来自动上传文件。它一一上传文件列表。我使用AutoIT 脚本来处理对话窗口、文件选择器窗口。参数$CmdLine[1]包含实际文件的路径。

ControlFocus("Open a file","","Edit1")
ControlSetText("Open a file","","Edit1", $CmdLine[1])
ControlClick("Open a file","","Button1")

我从Java代码执行如下:

Runtime.getRuntime().exec(autoITExecutable);

它会打开对话窗口,因此如果不关注浏览器窗口就无法工作。

文件上传字段的工作方式如下演示: https://encodable.com/uploaddemo/

【问题讨论】:

  • 而使用element.sendKeys() 上传文件将无法正常工作,因为...?
  • @JimEvans :我在大多数情况下都使用该解决方案,但它不适用于该字段,它无法接收文件。
  • @plaidshirt,可以看看这个网站吗?你也可以在这里发布有问题的元素的html吗?
  • @plaidshirt,当您在此字段上执行sendKeys 时会发生什么?什么都没有发生,或者当您提交时什么也没有发生?您还可以检查网络选项卡,看看发布的数据有什么问题吗?或者是否有任何控制台错误。在大多数情况下,可以使用 sendkeys 和一些额外的解决方法代码来处理这种情况。所以通常不需要使用原生窗口
  • 通过 selenium 为我工作

标签: selenium-webdriver selenium-chromedriver autoit


【解决方案1】:

我为您提供的链接运行了简单的脚本,效果很好

import os
from selenium import webdriver

driver = webdriver.Chrome()

driver.get("https://encodable.com/uploaddemo/")

driver.find_element_by_name("uploadname1").send_keys(os.getcwd() + "/test.csv")

driver.find_element_by_name("email_address").send_keys("none@getnada.com")
driver.find_element_by_name("first_name").send_keys("Tarun")
driver.find_element_by_id("uploadbutton").click()

【讨论】:

  • 谢谢,也许我记录的元素不正确。有没有其他解决方案?
  • 不看页面就很难说,每个页面都可能创建一个独特的情况。就像触发一些执行其他处理的事件一样,如果需要,您应该执行 javascript 来触发这些事件
【解决方案2】:

以类似的格式尝试您的代码,如下所示并尝试:

WinWaitActive("File Upload") // enter the title of the pop up

Send("Path of the file to enter")   // enter the path of the file to upload

Send("{ENTER}") / press enter

【讨论】:

  • 文件路径的字符一一打出,速度较慢,也打开了对话窗口。
  • 这是关于 AutoIT,而不是 awt Robot。
  • 尝试在打开文件对话框中使用 ControlSetText() 而不是 Send()?它应该快得多?
  • @garbb:是的。也许更快。但如果打开对话框,这不是我正在寻找的解决方案。
猜你喜欢
  • 1970-01-01
  • 2021-01-22
  • 1970-01-01
  • 2011-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多