2016-04-18 2 views
0

Ich versuche, eine Datei in selen webdriver mit Roboter-Klasse hochladen und ich benutze Mac-Maschine. Schlüssel senden funktioniert nicht. Unten ist der Code und es funktioniert gut, wenn ich eine Datei zum ersten Mal lade. Ich versuche, eine andere Datei von der gleichen Seite wieder zu laden, aber da das Applet geöffnet ist, wird keine Datei ausgewählt zu werden und Skript fehlschlägtWie hochzuladen mehrere Dateien mit Robot-Klasse in Selen Webdriver (Mac)?

browse.click(); // Click on a browse button from the page 
File file = new File(photoLocation); //send path of the file 

StringSelection StringSelection = new StringSelection(file.getAbsolutePath()); 

Toolkit.getDefaultToolkit().getSystemClipboard().setContents(StringSelection, null); //Copies the filepath to clipboard 


robot = new Robot(); 

//This launches java applet, so we are using cmd+tab to shift the focus 
    robot.keyPress(KeyEvent.VK_META); 
    robot.keyPress(KeyEvent.VK_TAB); 
    robot.keyRelease(KeyEvent.VK_META); 
    robot.keyRelease(KeyEvent.VK_TAB); 
    robot.delay(500); 

//Open Goto window 
    robot.keyPress(KeyEvent.VK_META); 
    robot.keyPress(KeyEvent.VK_SHIFT); 
    robot.keyPress(KeyEvent.VK_G); 
    robot.keyRelease(KeyEvent.VK_META); 
    robot.keyRelease(KeyEvent.VK_SHIFT); 
    robot.keyRelease(KeyEvent.VK_G); 

//Paste the clipboard value 
    robot.keyPress(KeyEvent.VK_META); 
    robot.keyPress(KeyEvent.VK_V); 
    robot.keyRelease(KeyEvent.VK_META); 
    robot.keyRelease(KeyEvent.VK_V); 

//Press Enter key to close the Goto window and Upload window 
    robot.keyPress(KeyEvent.VK_ENTER); 
    robot.keyRelease(KeyEvent.VK_ENTER); 
    robot.delay(500); 
    robot.keyPress(KeyEvent.VK_ENTER); 
    robot.keyRelease(KeyEvent.VK_ENTER); 

i den gleichen Code verwenden wieder von der Hauptseite aufgerufen wird zum Hochladen die zweite Datei. Da das Java-Applet jedoch noch geöffnet ist, kann ich die Datei nicht hochladen. Gibt es eine Möglichkeit für mich, das Applet zu schließen?

Antwort

0

warum setzen wir 2 mal alles, was für die Ex: -

robot.keyPress(KeyEvent.VK_META); 
robot.keyPress(KeyEvent.VK_TAB); 
robot.keyRelease(KeyEvent.VK_META); 
robot.keyRelease(KeyEvent.VK_TAB); 
0

Ich habe so hart versucht, dies zu tun. Ich habe es endlich gefunden. Stattdessen Fokus mit cmd + Tab Tasten des Verschiebens, benutzte ich, dass:

driver.switchTo().window(driver.getWindowHandle()); 

Dann drücken Sie CMD + SHIFT + G. Außerdem fügte ich Verzögerung nach dem Einfügen Pfad hinzu.

StringSelection StringSelection = new StringSelection(file.getAbsolutePath()); 
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(StringSelection, null); 

    driver.switchTo().window(driver.getWindowHandle()); 

    Robot robot = new Robot(); 

    //Open Goto window 
    robot.keyPress(KeyEvent.VK_META); 
    robot.keyPress(KeyEvent.VK_SHIFT); 
    robot.keyPress(KeyEvent.VK_G); 
    robot.keyRelease(KeyEvent.VK_META); 
    robot.keyRelease(KeyEvent.VK_SHIFT); 
    robot.keyRelease(KeyEvent.VK_G); 

    //Paste the clipboard value 
    robot.keyPress(KeyEvent.VK_META); 
    robot.keyPress(KeyEvent.VK_V); 
    robot.keyRelease(KeyEvent.VK_META); 
    robot.keyRelease(KeyEvent.VK_V); 

    //Press Enter key to close the Goto window and Upload window 
    robot.delay(1000); 
    robot.keyPress(KeyEvent.VK_ENTER); 
    robot.keyRelease(KeyEvent.VK_ENTER); 
    robot.delay(1000); 
    robot.keyPress(KeyEvent.VK_ENTER); 
    robot.keyRelease(KeyEvent.VK_ENTER); 

Ich hoffe, das hilft Mac-Benutzern, Dateien hochzuladen.

0

Ich habe versucht, für Schleife für Upload und Download richtig gelesen mehrere Dateien-

File folder = new File("D:\\Test\\Documents"); 
    File[] files = folder.listFiles(); 
    String filesList = ""; 
    for(int i = 0; i < files.length; i++){ 
     filesList += (i != 0? "\n":"") + files[i].getAbsolutePath(); 
     StringSelection sel = new StringSelection(filesList); 
------------------------------------------------------------------------ 

aber in löschte erste Datei immer mehrere Male und Dateien hochladen.

+1

Dies ist keine Antwort, sorry. Wenn Sie eine verwandte Frage haben, [fragen Sie] (https://stackoverflow.com/help/how-to-ask) eine neue und beziehen Sie sich hier. Vielleicht wollten Sie [comment] (https://stackoverflow.com/help/privileges/comment) zu dieser Frage. Ähnliche Fragen finden Sie im Menü "Related". Um mehr Aufmerksamkeit auf diese Frage zu lenken, können Sie [upvote] (https://stackoverflow.com/help/privileges/vote-up) oder [start a bounty] (https://stackoverflow.com/help/privileges/set -Bounties). Wenn du noch nicht genug Ruf hast, ist das aus einem bestimmten Grund --- [_ verdiene etwas! _] (Https://stackoverflow.com/help/whats-reputation) – jaySf