Selenium WebDriver and browsers select file dialog

来源:互联网 发布:linux 系统添加wifi 编辑:程序博客网 时间:2024/05/29 09:47

If you are trying to select a file for upload Selenium 2 supports HTML file inputs. For example:

HTML

<input type="file" id="uploadhere" />

Selenium Code

IWebElement element = driver.FindElement(By.Id("uploadhere"));element.SendKeys("C:\\Some_Folder\\MyFile.txt");

Basically you "type" (with SendKeys) the full file path to the file input element. Selenium handles the file selection dialog for you.

However if you want to manipulate an arbitrary file selection dialog, then like Anders said, you have to go outside of Selenium.


Here is another solution using remotewebdriver, it works like magic and I loved it.

Here is the class I have:

driver.findElementByLinkText("Upload Files").click();driver.setLogLevel(Level.ALL);System.out.println(driver.getCurrentUrl());WebElement element = driver.findElement(By.xpath("//input[@name='file_1']"));LocalFileDetector detector = new LocalFileDetector();//Now, give the file path and see the magic :)              String path = "D://test66T.txt";File f = detector.getLocalFile(path);((RemoteWebElement)element).setFileDetector(detector);element.sendKeys(f.getAbsolutePath());//now click the button to finishdriver.findElementByXPath("//html/body/div[9]/div[1]/a/span").click();