2017-01-24 4 views
0

auf meiner Web-Automatisierung versucht, einen solchen Code zu verwenden, die nicht funktioniert:Wie Dateien/mehrere Dateien von Knoten laden i in Selenium

WebElement El = driver.findElement((By.xpath(".//*[@id='app']/div[1]/div[2]/div[1]/div/div[2]/form/label/span[1]/span"))); 
     ((RemoteWebElement) El).setFileDetector(new LocalFileDetector()); 
     El.sendKeys("~/Documents/Data/20_10MB/176H.jpg"); 

Das Problem ist, dass es nicht Element finden. Das Element, das sich auf der Website befindet, hat nur Xpath. Es hat keine andere eindeutige ID.

Ich muss Test schreiben, die 1 oder mehrere Dateien (bis zu 10 000) oder ganzen Ordner hochladen wird. Wie kann ich das auf Mac machen?

Die aktuelle Konfiguration ist Hub, der den Test auf Knotenmaschinen startet. Der Roboter funktioniert nicht, da er nur die Schlüssel auf dem lokalen Rechner automatisiert. Was ist eine mögliche Problemumgehung?

+0

Ihr xpath ist kompliziert und spröde, kein Wunder, dass es kein Element findet. Können Sie kurzes relevantes html um das Element posten, mit dem Sie interagieren möchten? – nilesh

Antwort

0

Scheint, dass Sie versuchen, falsches Element zu behandeln, da span nicht das ist, was Sie brauchen. Versuchen Sie den folgenden Code:

WebElement El = driver.findElement((By.xpath("//input[@type='file']"))); 
El.sendKeys("~/Documents/Data/20_10MB/176H.jpg"); 
+0

Frage 1: Es sagt "Pfad ist nicht absolut". Aber ich brauche keinen absoluten Pfad, da jeder Knoten einen anderen Speicherort der Datei hat, was bedeutet, dass Knoten 1/userMartin/testFiles und Benutzer 2/userJoe/testFiles sein wird. Gibt es eine Möglichkeit, wie Knoten Dateien von Grid erben? Oder, wie ich Test ohne absoluten Pfad verwenden kann. Da 5000 von Hub zu Knoten und Von Knoten zu Web geladen wird dauert viel länger dann von Knoten zu Web direkt. Wie man relativen Pfad anstelle von absolutem verwendet "~/Dokumente/Daten/20_10MB/176H.jpg" Und Frage 2: Wie kann ich mehrere Akten wählen? Bedeutung 500 + Dateien – Anton

+0

1. Gut, Sie können alle Ihre Test-Dateien auf einem Remote-Server speichern und HTTP-GET-Anforderung machen, um jede Datei einfach per Name herunterladen, aber es scheint etwas kompliziert und benötigen Web-Traffic und mehr Zeit . 2. Können Sie tatsächlich mehr als eine Datei gleichzeitig manuell über 'UI' hochladen? – Andersson

+0

Ich habe einen Roboter benutzt, aber in diesem Fall funktioniert es nicht. Weil es nur auf dem lokalen Rechner ausgeführt wird. Mit Roboter zeige ich einfach auf eine Datei und benutze Cmd + A Hotkey – Anton