我正在尝试使用java为网站编写selenium测试。但是,我在测试文件上传时遇到了一个问题..
当我点击文件上传按钮时,它会自动打开Windows文件上传。我有代码工作将文本成功地放在上传框中,它只是没有什么我可以做的阻止Windows框自动出现,并且让网站不自动打开Windows文件上传不是一个真正的选择。通过研究这个主题,我知道selenium webdriver无法处理这个问题。所以我的问题是:我可以通过自动方式关闭上传窗口的方式是什么?
我已经尝试过java机器人类,但它没有用。它等到上传窗口关闭之后再执行我给它的任何命令(ALT-F4,点击x-y位置等)
提前致谢
编辑:
wait.until(ExpectedConditions.elementToBeClickable(By.id(("addResourcesButton"))));
driver.findElement(By.id("addResourcesButton")).click();
//popup window comes up automatically at this point
try {
Robot robot = new Robot();
robot.mouseMove(875, 625);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
} catch (AWTException e) {
e.printStackTrace();
}
//my attempt to move the mouse and click, doesn't move or click until after I close the windows upload box
String fileToUpload = "C:\\file.png";
WebElement uploadElement = driver.findElement(By.id("fileInput"));
uploadElement.sendKeys(fileToUpload);
//Takes the code and successfully submits it to the text area, where I can now upload it
答案 0 :(得分:5)
您可以使用以下任一方法执行非阻止点击:
The Advanced User Interactions API(JavaDocs)
WebElement element = driver.findElement(By.whatever("anything"));
new Actions(driver).click(element).perform();
或JavaScript:
JavascriptExecutor js = (JavascriptExecutor)driver;
WebElement element = driver.findElement(By.whatever("anything"));
js.executeScript("arguments[0].click()", element);
答案 1 :(得分:0)
我已经回答了类似的问题。上传提供了其他解决方案 - 比如使用AutoIT。但我个人会推迟与任何特定于操作系统的对话进行交互。与特定于操作系统的对话进行交互将限制您从给定环境运行测试。
Selenium webdriver java - upload file with phantomjs driver
始终识别&在涉及上载时与“文件”类型的元素交互。这将解决您的弹出窗口问题。
Ex:在我的应用程序中,上传相关元素具有以下DOM -
<a id="uploadFileButtonLink" class="uploadFileButtonLink" href="javascript:void(0)" data-uidsfdc="3" style="display: none;">Upload a file</a>
<input id="multiFileInput" class="multifile-upload-input-button" type="file" name="chatterFile_upload" multiple="multiple"/>
<input id="multiUploadBtn" class="btnImportant" type="button" value="Upload Files"/>
在这种情况下,您可以将sendKeys方法用于“multiFileInput”,其类型为“file”。 这样它适用于所有FF,Chrome和&amp;也是无头浏览器。