software español ejemplos descargar chromedriver chrome c# selenium webdriver

c# - español - Selenium WebDriver y los navegadores seleccionan el diálogo de archivos



selenium software download (8)

Aquí hay otra solución que usa remotewebdriver, funciona como magia y me encantó.

Aquí está la clase que tengo:

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 finish driver.findElementByXPath("//html/body/div[9]/div[1]/a/span").click();

Estoy usando Selenium Webdriver, C #.

¿Es posible hacer que funcione webdriver con el diálogo de selección de archivos de Firefox? ¿O debo usar algo como AutoIt?


Esto se puede hacer de la siguiente manera, probado y trabajando con Internet Explorer y el controlador Chrome

var allowsDetection = this.Driver as IAllowsFileDetection; if (allowsDetection != null) { allowsDetection.FileDetector = new LocalFileDetector(); } Driver.FindElement(By.Id("your-upload-input")).SendKeys(@"C:/PathToYourFile");

Consulte https://groups.google.com/forum/#!msg/webdriver/KxmRZ8MkM4M/45CT4ID_WjQJ


No, WebDriver no puede interactuar con diálogos, esto se debe a que los diálogos son el dominio del sistema operativo y no la página web.

Conozco personas que han tenido suerte con autoit, así como la API de automatización proporcionada por .Net.

Otra opción sería omitir el diálogo del archivo por completo y emitir un POST o un GET, pero esto requiere un conocimiento más avanzado del sitio web, así como comprender cómo construir un POST / GET.

Puede probar Webinator , es similar a Selenium en el sentido de que funciona con WebDriver. Proporciona capacidades de diálogo de archivos y he tenido un gran éxito con él.


Otro enfoque es utilizar System.Windows.Forms.SendKeys.SendWait("pathToFile") .
Lo uso con éxito en todas partes donde no puedo enviar claves a elementos como los descritos por @prestomanifesto.


Si desea cargar un archivo y no usar WebDriver, la única solución que he encontrado es AutoIt . Le permite escribir un script y convertirlo en un ejecutable al que luego puede llamar desde su código. Lo he usado con éxito mientras trabajaba con un control ActiveX.


Si está intentando seleccionar un archivo para cargar, Selenium 2 admite entradas de archivos HTML. Por ejemplo:

HTML

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

Código de Selenio

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

Básicamente, usted "escribe" (con SendKeys ) la ruta completa del archivo al elemento de entrada del archivo. Selenium maneja el diálogo de selección de archivos por ti.

Sin embargo, si desea manipular un diálogo de selección de archivos arbitrario, entonces, como dijo Anders, tiene que salir de Selenium.


Utilicé esto para resolver el problema ... inténtelo si todo lo anterior no funciona

Actions action = new Actions(driver); action.SendKeys(pObjElement, Keys.Space).Build().Perform(); Thread.Sleep(TimeSpan.FromSeconds(2)); var dialogHWnd = FindWindow(null, "Elegir archivos para cargar"); // Here goes the title of the dialog window var setFocus = SetForegroundWindow(dialogHWnd); if (setFocus) { Thread.Sleep(TimeSpan.FromSeconds(2)); System.Windows.Forms.SendKeys.SendWait(pFile); System.Windows.Forms.SendKeys.SendWait("{DOWN}"); System.Windows.Forms.SendKeys.SendWait("{TAB}"); System.Windows.Forms.SendKeys.SendWait("{TAB}"); System.Windows.Forms.SendKeys.SendWait("{ENTER}"); } Thread.Sleep(TimeSpan.FromSeconds(2)); }


Según Nadim Saker

.Net tiene una biblioteca para manejar el diálogo de carga de archivos. Tiene una clase SendKeys que tiene un método SendWait (claves de cadena). Envía la clave dada en la aplicación activa y espera a que se procese el mensaje. No devuelve ningún valor.