为了账号安全,请及时绑定邮箱和手机立即绑定

无需浏览器焦点即可自动将文件上传到站点

无需浏览器焦点即可自动将文件上传到站点

守着一只汪 2021-11-24 18:54:15
我致力于测试脚本以自动将文件上传到站点并在无头模式下执行脚本。它需要一一上传文件列表,我是基于Selenium WebDriver. 我使用AutoIT脚本来处理对话窗口、文件选择器窗口。参数$CmdLine[1]包含实际文件的路径。ControlFocus("Open a file","","Edit1") ControlSetText("Open a file","","Edit1", $CmdLine[1]) ControlClick("Open a file","","Button1")它使用以下代码执行:Runtime.getRuntime().exec(autoITExecutable);它会打开对话窗口,因此如果不关注浏览器窗口就无法工作。java.awt.Robot类的工作原理类似,它需要关注浏览器窗口。我也尝试使用sendKeys()方法,但输入字段无法以这种方式处理文件。Katalon Studio也无法处理这个领域。
查看完整描述

3 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

您可以尝试以下代码:


// wait for the window to appear

WebDriverWait wait = new WebDriverWait(driver, 10);

wait.until(ExpectedConditions.alertIsPresent());


// switch to the file upload window

Alert alert = driver.switchTo().alert();


// enter the filename

alert.sendKeys(fileName);


// hit enter

Robot r = new Robot();

r.keyPress(KeyEvent.VK_ENTER);

r.keyRelease(KeyEvent.VK_ENTER);


// switch back

driver.switchTo().activeElement();


查看完整回答
反对 回复 2021-11-24
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

试试这个,

webElement.sendKeys(System.getProperty("user.dir") + "file path");

这里,

  • webElement 是为文件上传标识的元素。请确保输入元素可见。

  • 尝试将文件路径指定为我们要上传的内容的相对路径。

确保您没有单击浏览按钮,单击浏览按钮将打开 Windows 对话框,其中 selenium webDriver 将不起作用。


查看完整回答
反对 回复 2021-11-24
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

直接使用硒:

driver().findElement(By.id("ContentPlaceHolder1_Uploader1__Insert")).sendKeys(pathToFile);

有了这个,您可以避免使用系统依赖对话框。


查看完整回答
反对 回复 2021-11-24
  • 3 回答
  • 0 关注
  • 207 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信