comment changer l'emplacement de téléchargement de fichier dans Webdriver tout en utilisant le driver chrome / firefox driver
Je suis en train d'enregistrer une image en utilisant l'option enregistrer sous à l'intérieur d'un dossier spécifique. J'ai trouvé un moyen par lequel je suis capable de faire un clic droit sur l'image que je veux sauvegarder à l'aide de option enregistrer sous. Mais le problème là où je suis coincé est après l'obtention de la fenêtre de l'os qui vous demande où enregistrer le fichier, je ne suis pas en mesure d'envoyer l'emplacement souhaité car je ne sais pas comment le faire. Je suis passé par les mêmes questions posées sur ce forum, mais non d'entre eux ont aidé jusqu'à présent.
Code est-
Pour Firefox-
public class practice {
public void pic() throws AWTException{
WebDriver driver;
//Proxy Setting
FirefoxProfile profile = new FirefoxProfile();
profile.setAssumeUntrustedCertificateIssuer(false);
profile.setEnableNativeEvents(false);
profile.setPreference("network.proxy.type", 1);
profile.setPreference("network.proxy.http", "localHost");
profile.setPreference("newtwork.proxy.http_port",3128);
//Download setting
profile.setPreference("browser.download.folderlist", 2);
profile.setPreference("browser.helperapps.neverAsk.saveToDisk","jpeg");
profile.setPreference("browser.download.dir", "C:\\Users\\Admin\\Desktop\\ScreenShot\\pic.jpeg");
driver = new FirefoxDriver(profile);
driver.navigate().to("http://stackoverflow.com/users/2675355/shantanu");
driver.findElement(By.xpath("//*[@id='large-user-info']/div[1]/div[1]/a/div/img"));
Actions action = new Actions(driver);
action.moveToElement(driver.findElement(By.xpath("//*[@id='large-user-info']/div[1]/div[1]/a/div/img"))).perform();
action.contextClick().perform();
Robot robo = new Robot();
robo.keyPress(KeyEvent.VK_V);
robo.keyRelease(KeyEvent.VK_V);
//Here i am getting the os window but don't know how to send the desired location
}//method
}//class
Pour chrome-
public class practice {
public void s() throws AWTException{
WebDriver driver;
System.setProperty("webdriver.chrome.driver","C:\\Users\\Admin\\Desktop\\chromedriver.exe");
driver = new ChromeDriver();
driver.navigate().to("http://stackoverflow.com/users/2675355/shantanu");
driver.findElement(By.xpath("//*[@id='large-user-info']/div[1]/div[1]/a/div/img"));
Actions action = new Actions(driver);
action.moveToElement(driver.findElement(By.xpath("//*[@id='large-user-info']/div[1]/div[1]/a/div/img"))).perform();
action.contextClick().perform();
Robot robo = new Robot();
robo.keyPress(KeyEvent.VK_V);
robo.keyRelease(KeyEvent.VK_V);
//Here i am getting the os window but don't know how to send the desired location
}
}
source d'informationauteur Shantanu Nandan
Vous devez vous connecter pour publier un commentaire.
Il y a deux choses qui vont mal dans le code.
Pour Firefox:
Vous devez définir
de ne pas
deuxièmement, vous définissez la préférence navigateur.le téléchargement.folderlistil est navigateur.le téléchargement.folderList (L caps folderList).
Une fois que vous avez atteint cette fois, vous pouvez utiliser votre Robot de classe pour effectuer les opérations souhaitées.
Pour Chromedriver essayer avec:
Espère que cette aide. 🙂
J'ai passé beaucoup de temps à étudier la façon de télécharger le fichier pdf dans le navigateur firefox sans l'Enregistrer Comme popup apparence. Il migth être aider quelqu'un.
Après quelques recherche locale, comment télécharger pdf fichier dans firefox sans l'Enregistrer Comme popup, j'ai trouvé le minimum requis de préférence dans firefox profil:
Bien sûr, vous pouvez ajouter d'autres préférences.
Il fonctionne dans Firefox 45-46 versions.
Pour Le Navigateur Google Chrome,:
Même, vous pouvez désactiver les fenêtres de dialogue (Dialogue Enregistrer sous) avec l'extrait de code suivant. Vous devez effectuer les opérations suivantes options de réglage dans le chromedriver préférences:
Accepter un certificat dans le navigateur
Probablement pas la meilleure solution, mais vous pouvez essayer d'utiliser sikuli api pour confirmer la sauvegarde de la boîte de montre.
La zone enregistrer sous est une fenêtre de l'OS.
Vous avez en partie répondu à votre propre question:
Le sélénium est un navigateur outil d'automatisation - la fenêtre de l'os n'est pas un navigateur! Vous aurez besoin d'utiliser quelque chose d'autre. Il y a beaucoup de choix, selon vos besoins: Sikuli, Robot, AutoIt, ...
Utiliser la même classe de Robot et appuyez sur enter pour sélectionner l'option "Enregistrer" dans la boîte de dialogue Windows.
robo.keyPress(KeyEvent.VK_ENTER);
robo.keyRelease(KeyEvent.VK_ENTER);
si vous avez besoin de renommer de copier le nom du fichier dans le presse-papiers et passer comme ci-dessous