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

我致力于测试脚本以自动将文件上传到站点并在无头模式下执行脚本。它需要一一上传文件列表,我是基于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也无法处理这个领域。


守着一只汪
浏览 213回答 3
3回答

杨魅力

您可以尝试以下代码:// wait for the window to appearWebDriverWait wait = new WebDriverWait(driver, 10);wait.until(ExpectedConditions.alertIsPresent());// switch to the file upload windowAlert alert = driver.switchTo().alert();// enter the filenamealert.sendKeys(fileName);// hit enterRobot r = new Robot();r.keyPress(KeyEvent.VK_ENTER);r.keyRelease(KeyEvent.VK_ENTER);// switch backdriver.switchTo().activeElement();

慕莱坞森

试试这个,webElement.sendKeys(System.getProperty("user.dir") + "file path");这里,webElement 是为文件上传标识的元素。请确保输入元素可见。尝试将文件路径指定为我们要上传的内容的相对路径。确保您没有单击浏览按钮,单击浏览按钮将打开 Windows 对话框,其中 selenium webDriver 将不起作用。

子衿沉夜

直接使用硒:driver().findElement(By.id("ContentPlaceHolder1_Uploader1__Insert")).sendKeys(pathToFile);有了这个,您可以避免使用系统依赖对话框。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java