¿Hay alguna manera de cargar archivos en Google Chrome ya que Selenium RC "attach_file" solo admite * Firefox? Cualquier sugerencia o solución alternativa son muy apreciadas.Selenio: Cargar archivo en Google Chrome
Respuesta
La carga de archivos suele ser una solicitud POST, por lo que puede cargar un archivo sin utilizar Selenium; A menos que su sitio requiere cookies, entonces usted necesita para reconstruir las galletas con webdriver.get_cookies() primero
un ejemplo sencillo:
# required package:
# http://pypi.python.org/pypi/MultipartPostHandler/0.1.0
import MultipartPostHandler, urllib2, cookielib
cookies = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies),
MultipartPostHandler.MultipartPostHandler)
path_to_file = r"abc.zip"
open_file = open(path_to_file,"rb")
param = { "file": open_file }
req = opener.open("http://www.yoursite.com/uploadfile", param)
open_file.close()
Si está utilizando WebDriver continuación, cargar el archivo de todo lo que necesita es su uso " sendKeys "para escribir la ruta del archivo. Necesita 'omitir' la parte de hacer clic en el botón Examinar que abre un cuadro de diálogo para seleccionar el archivo. Una versión de Java que funciona para mí se parece a continuación,
WebElement inputFilePath = driver.findElement(By.id("filepath"));
inputFilePath.sendKeys("/absolute/path/to/my/local/file");
Probablemente también digno de mención que Usar sendKeys para cargar un archivo solo funcionará con un Ardesco
Uso IJavaScriptExecutor es cambiar el campo de entrada de carga para hacer clic capaces conductor para Chrome no pop-up de error diciendo que este elemento es que no se puede hacer clic.
[SetUp]
public void SetupTest()
{
driver = new ChromeDriver();
baseURL = "";
verificationErrors = new StringBuilder();
}
[Test]
public void Test()
{
IJavaScriptExecutor js = driver as IJavaScriptExecutor;
IWebElement element = driver.FindElement(By.Id("UploadFile_ButtonID"));
js.ExecuteScript("arguments[0].style.visibility = 'visible'; arguments[0].style.height = '1px'; arguments[0].style.width = '1px'; arguments[0].style.opacity = 1", element);
Thread.Sleep(1000);
element.SendKeys("D:\\path\\test\\image.jpg");
}
El código sin contexto no tiene sentido. No has explicado por qué estás usando JavaScript Executor para establecer el elemento visible y en mi humilde opinión es una mala práctica. Selenio le impide interactuar con elementos ocultos porque eso es algo que un usuario final no podría hacer. En lugar de usar ciegamente J avaScript para forzar al elemento visible, en realidad debería hacer lo que un usuario final haría para que el elemento sea visible. – Ardesco
También utiliza un Thread.sleep que nuevamente es una mala práctica, lo correcto sería usar un objeto WebDriverWait y la clase ExpectedConditions para esperar a que el elemento sea visible. Este es un ejemplo de mala calidad sin explicación y mala práctica de código -1 – Ardesco
- 1. Comando para cargar jQuery en el inspector de Google Chrome?
- 2. Cómo cargar un archivo (imagen) con selenio, python
- 3. Crear archivo Google Chrome Crx con PHP
- 4. Archivo de cookies para Google Chrome/Unix
- 5. Google Chrome: archivo de texto auto wrap
- 6. cargar un archivo remoto para Google Drive
- 7. Google Chrome Cache
- 8. getElemenById problema en Google Chrome
- 9. tipo MIME para el archivo zip en Google Chrome
- 10. ¿Es posible ejecutar un archivo HAR en google chrome?
- 11. Configuración CrossDomain en Google Chrome
- 12. ¿Cómo cargar el archivo de propiedades en Google App Engine?
- 13. Google Chrome Extensions y NPAPI
- 14. Pruebas de selenio para Google maps
- 15. Google Chrome fondo gradiente
- 16. google chrome error?
- 17. ¿Es incrustable Google Chrome?
- 18. Google chrome html5 support
- 19. Detectando traducción Google Chrome
- 20. Google chrome extension: local storage
- 21. XSL no funciona en Google Chrome
- 22. Eliminar favicon mediante javascript en Google Chrome
- 23. Descargue la fuerza en Google Chrome Extensión
- 24. jQuery spritely y Google Chrome
- 25. Google Chrome - Versión de JavaScript
- 26. Google Chrome sobre Linux FrameBuffer
- 27. Uso de Google Chrome Sandbox
- 28. Google Chrome text shadow rendering
- 29. Google Chrome "window.open" ¿solución alternativa?
- 30. Google Maps parpadeantes cuestión en Google navegador Chrome
[I publicado una respuesta utilizando pitón aquí.] [1] [1]: http://stackoverflow.com/a/11872608/471376 – JamesThomasMoon1979