mac chromedriver chrome bindings selenium automation webdriver browser-automation selenium-chromedriver

chromedriver - selenium webdriver chrome python



¿Cómo carga Selenium WebDriver los archivos al navegador? (6)

Soy un desarrollador de javascript / java y he estado tratando de descubrir cómo el marco de automatización de selenium webdriver carga archivos desde el sistema de archivos. Es imposible establecer una entrada de archivo a través de javascript porque es una violación de seguridad. Sin embargo, de alguna manera, Webdriver puede hacer esto con el siguiente comando:

driver.setFileDetector(new LocalFileDetector()); WebElement upload = driver.findElement(By.id("myfile")); upload.sendKeys("/Users/sso/the/local/path/to/darkbulb.jpg"); driver.findElement(By.id("submit")).click();

¿Entonces están configurando el valor enviándole claves? No lo entiendo He consultado el código fuente que se encuentra aquí: http://code.google.com/p/selenium/source/checkout Aún no puedo encontrar dónde lo hacen.

Editar: Mi pregunta no es cómo hacer esto con selenio, pero ¿cómo los desarrolladores de selenio lo hicieron posible? ¿Cómo salieron las restricciones de seguridad en javascript? ¿Cómo están cargando el archivo?


Buena pregunta amigo ... han escrito un proxy HTTP para resolver las restricciones de seguridad de Javascript. El uso de este proxy hizo posible evitar muchas de las restricciones de la política de "mismo origen de host", donde un navegador no permite que Javascript realice llamadas a otra cosa que no sea el servidor desde el que se ha servido la página actual.

Además WebDriver utiliza el enfoque alternativo de disparar eventos en el nivel del sistema operativo. Como estos "eventos nativos" no son generados por el navegador, este enfoque elude las restricciones de seguridad impuestas a los eventos sintetizados y, dado que son específicos del sistema operativo, una vez que funcionan para un navegador en una plataforma particular, reutilizar el código en otro navegador es relativamente fácil.

La mayor parte del contenido anterior se menciona a continuación. Lea la siguiente referencia para obtener más información sobre el Selenium internals

http://www.aosabook.org/en/selenium.html


En algunos casos, especialmente con Java, necesita crear un objeto File y pasar el absolutePath () al Driver, como el siguiente:

File file = new File(sampleFile); driver.findElement(By.id("<Your input tag with type of File>")).sendKeys(file.getAbsolutePath());

El archivo de muestra es una cadena que apunta al archivo que debe cargarse. Esto funciona para mí en Firefox y Chrome.


Esto me ayudó a subir archivos,

Código:

public class FileUpload { @Test public void test() { WebDriver driver = new FirefoxDriver(); driver.get("http://www.freepdfconvert.com/pdf-word"); driver.findElement(By.id("clientUpload")).click(); driver.switchTo() .activeElement() .sendKeys( "/home/likewise-open/GLOBAL/123/Documents/filename.txt"); driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); driver.findElement(By.id("convertButton")); /* * driver.switchTo().activeElement() * .sendKeys("selenium_2_testing_tools.pdf"); ; */ { driver.wait(30000); } catch (Exception er) { System.out.println(er); } } }


He subido una foto en Facebook usando Selenium Webdriver y AutoIt

Los pasos son los siguientes

Paso 1

El código de eclipse Upto (Upload a Photo) es el siguiente:

WebElement Upload = Firefox.findElement(By.cssSelector("input[id^=''u_'']")); Upload.click();

Paso 2

Descargar e instalar AutoIt: http://www.autoitscript.com/site/autoit/downloads/ (Descargar ZIP)

Paso 3

Escriba el código siguiente en el bloc de notas y PhotoUpload.au3 como PhotoUpload.au3

WinWaitActive("File Upload") Send("D:/Photo0116.jpg") Send("{ENTER}")

Paso 4 : haz clic con el botón derecho en este archivo .au3 y compilalo.

Paso 5 : agregue el código en el archivo de script de la siguiente manera:

try { String[] commands = new String[]{}; // Location of the autoit executable commands = new String[] {"D://My softwares//install software//selenium//UploadPhoto3.exe"}; Runtime.getRuntime().exec(commands); } catch (IOException e) {}

Paso 6 : ejecutar el script ( PhotoUpload.java )

Paso 7 : la foto se carga correctamente.


Los códigos HTML de la función de archivo upload windowns son:

<input id="fileField" type="file" onchange="document.getElementById(''textfield'').value=this.value" name="position"> <input type="submit" value="导入">

Puede usar los siguientes códigos para terminar de cargar un archivo de Windows. Funciona con éxito y los códigos no incluyen hacer clic en una acción de carga.

driver.FileDetector = new LocalFileDetector(); FindElement(By.Id("fileField")).SendKeys(@"C:/Users/admin/Desktop/ProfessionCodes.txt"); FindElement(By.CssSelector("input[type=''submit'']")).Click();


//assuming driver is a healthy WebDriver instance WebElement fileInput = driver.findElement(By.name("uploadfile")); fileInput.sendKeys("C:/path/to/file.jpg");

o

driver.findElement(By.id("inputFile")).sendKeys("C:/path/to/file.jpg");

Intenta eso y dejame saber