Як загрузіць файл з дапамогай Selenium WebDriver ў Java

Можа хто-небудзь, дайце мне ведаць, як загрузіць файл з дапамогай Selenium на Java-код?

Пры націску на кнопку ў дадатку становіцца адкрытым у новым акне, што я магу выкарыстоўваць, каб выбраць файл для загрузкі. Кнопка прагляду распрацавана Silverlight (C #).

54
Сардэчна запрашаем Махеш - вы можаце даць нам крыху больш фону, калі ласка? Магчыма, апублікаваць скрыншот і/або код вашага вэб-прыкладанні, і паказаць нам код WebDriver вы распрацавалі да гэтага часу?
дададзена аўтар Vince Bowdren, крыніца

6 адказы

First make sure that the input element is visible

Як заявіў Марк Кален у абмеркаванні тут :

Don't click on the browse button, it will trigger an OS level dialogue box and effectively stop your test dead.

Instead you can use:

driver.findElement(By.id("myUploadElement")).sendKeys("");

myUploadElement is the id of that element (button in this case) and in sendKeys you have to specify the absolute path of the content you want to upload (Image,video etc). Selenium will do the rest for you.

Keep in mind that the upload will work only If the element you send a file should be in the form <input type="file">

84
дададзена
Я дадаў той жа code..but ён не працуе
дададзена аўтар Arup Rakshit, крыніца
гэта вырашыць ці гэта не так?
дададзена аўтар gumuruh, крыніца
Так, у гэтым выпадку атрыбут <�ўваходных тып = "Файл»> вельмі важна факусоўкай.
дададзена аўтар Ripon Al Wasim, крыніца
Прывітанне @ArupRakshit, было б выдатна, калі б вы даць сутнасць кода тут. Так што мы паглядзім на тое, чаму ён не працуе можам. Дзякуючы.
дададзена аўтар Kedar T, крыніца
Вы можаце выкарыстоўваць наступны код, каб атрымаць поўны шлях да файла і загружаць змесціва Радок Filepath = System.getProperty ( «user.dir») + «/src/res/test.pdf; driver.findElement (By.id ( "elementID")) SendKeys (Filepath).
дададзена аўтар gihanchanuka, крыніца
driver.findElement(By.id("urid")).sendKeys("drive:\\path\\filename.extension");
10
дададзена

Гэта тое, што я выкарыстоўваю, каб загрузіць малюнак праз акно загрузкі:

    //open upload window
    upload.click();

    //put path to your image in a clipboard
    StringSelection ss = new StringSelection("C:\\IMG_3827.JPG");
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);

    //imitate mouse events like ENTER, CTRL+C, CTRL+V
    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);

зроблена

9
дададзена
Салодкае. А гэта ёсьць ключавыя падзеі не падзеі мышы (відавочна). У любым выпадку выдатная ідэя ....
дададзена аўтар Martin Kersten, крыніца
яна не закрывае акно загрузкі для мяне
дададзена аўтар mosaad, крыніца

Калі ў вас ёсць тэкставае поле, каб увесці шлях да файла, проста выкарыстоўваць SendKeys для ўводу шляху да файла і націсніце на кнопку адправіць. Калі няма тэкставае поле, каб увесці шлях да файла і толькі ў стане націснуць на кнопку Агляд і выбраць файл з акна ўсплывае акна, вы можаце выкарыстоўваць AutoIt інструмент, гл крок ніжэй, каб выкарыстоўваць AutoIt для таго ж,

  1. Download and Install Autoit tool from http://www.autoitscript.com/site/autoit/

  2. Open Programs -> Autoit tool -> SciTE Script Editor.

  3. Paste the following code in Autoit editor and save it as “filename.exe “(eg: new.exe)

    Then compile and build the file to make it exe. (Tools → Compile)

AutoIt код:

WinWaitActive("File Upload"); Name of the file upload window (Windows Popup Name: File Upload)    
Send("logo.jpg"); File name    
Send("{ENTER}")

Then Compile and Build from Tools menu of the Autoit tool -> SciTE Script Editor.

Уставіць ніжэй Java кода ў рэдактары Eclipse, і захаваць

Java код:

driver.findElement(By.id("uploadbutton")).click;//open the Upload window using selenium    
Thread.sleep("20000");//wait for page load    
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + "C:\\Documents and Settings\\new.exe");//Give  path where the exe is saved.
3
дададзена
Добрая праца! :-) Я палепшыў сцэнар няшмат: stackoverflow.com/questions/14592853/…
дададзена аўтар SharpC, крыніца

Я спрабаваў выкарыстаць вышэй робат ёсць неабходнасць дадаць затрымку :( Таксама вы не можаце адладжваць або зрабіць што-то яшчэ, таму што вы губляеце фокус :(

// адкрыць акно загрузкі     upload.click ();

//put path to your image in a clipboard
StringSelection ss = new StringSelection(file.getAbsoluteFile());
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);

//imitate mouse events like ENTER, CTRL+C, CTRL+V
Robot robot = new Robot();
robot.delay(250);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.delay(50);
robot.keyRelease(KeyEvent.VK_ENTER);
2
дададзена
Гэта націск ўводу, ўстаўка тэксту і націснуць зноў увайсці
дададзена аўтар blizz, крыніца
Ці можаце вы растлумачыць робат крокі націску, што менавіта happing калі вышэй каманды называюцца?
дададзена аўтар zishan paya, крыніца

Знайсці тэг як тыпу = «файл» . гэта асноўны тэг, які падтрымліваецца селен. Калі вы можаце пабудаваць свой XPath з такім жа, калі рэкамендуецца.

  • SendKeys выкарыстоўваць для кнопак, якая мае опцыі прагляду (кнопка, якая адкрыецца ваша акно акно выбару файлаў)
  • Цяпер націсніце на кнопку, якая збіраецца загрузіць файл

Як паказана ніжэй: -

driver.findElement(By.xpath("//input[@id='files']")).sendKeys("D:"+File.separator+"images"+File.separator+"Lighthouse.jpg"");
Thread.sleep(5000);    
driver.findElement(By.xpath("//button[@id='Upload']")).click(); 

Для шматразовай загрузкі файла змясціць усе файлы адзін за адным SendKeys, а затым націсніце на загрузку

driver.findElement(By.xpath("//input[@id='files']")).sendKeys("D:"+File.separator+"images"+File.separator+"Lighthouse.jpg"");  
driver.findElement(By.xpath("//input[@id='files']")).sendKeys("D:"+File.separator+"images"+File.separator+"home.jpg");
driver.findElement(By.xpath("//input[@id='files']")).sendKeys("D:"+File.separator+"images"+File.separator+"tsquare.jpg");
Thread.sleep(5000); 
driver.findElement(By.xpath("//button[@id='Upload']")).click();//Upload button
1
дададзена
падзяліцца HTML код. яна павінна працаваць .. убачыць селен дакументы: - saucelabs.com/resources/articles/selenium -file-загрузкі . Я выкарыстоўваю той жа
дададзена аўтар Shubham Jain, крыніца
гэта таксама залежыць ад аперацыйнай сістэмы, якую вы выкарыстоўваеце, калі вы карыстаецеся вокны, то выкарыстоўвайце \\ і калі Linux ці Mac, то //
дададзена аўтар Shubham Jain, крыніца
таксама даць некалькі чакаць. Гэта робіць розніцу ў шмат разоў
дададзена аўтар Shubham Jain, крыніца
Ён не працаваў для мяне
дададзена аўтар Kumrun Nahar Keya, крыніца