Esiste un modo per caricare file in Google Chrome poiché Selenium RC "attach_file" supporta solo * Firefox? Qualsiasi suggerimento o soluzione alternativa sono molto apprezzati.Selenium: carica file in Google Chrome
risposta
Il caricamento del file è in genere una richiesta POST, quindi è possibile caricare un file senza utilizzare Selenium; A meno che il sito richiede i cookie, allora avete bisogno di ricostruire i biscotti con webdriver.get_cookies() primi
Un semplice esempio:
# 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()
Se si utilizza WebDriver poi caricare il file tutto ciò che serve è l'uso " sendKeys "per digitare il percorso del file. È necessario "saltare" la parte di clic sul pulsante Sfoglia che apre una finestra di dialogo per selezionare il file. Una versione di Java che funziona per me sembra qualcosa di simile qui di seguito,
WebElement inputFilePath = driver.findElement(By.id("filepath"));
inputFilePath.sendKeys("/absolute/path/to/my/local/file");
Probabilmente anche interessante notare che l'uso di sendKeys per caricare un file funziona solo con un Ardesco
Utilizzando IJavaScriptExecutor è quello di cambiare il campo di input di upload per fare clic in grado driver in modo cromo errore dicendo che questo elemento non è cliccabile non sarà pop-up.
[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");
}
Il codice senza contesto è inutile Non hai spiegato perché stai usando un Executor JavaScript per impostare l'elemento visibile e IMHO è probabilmente una cattiva pratica. ti impedisce di interagire con elementi nascosti perché è qualcosa che un utente finale non può fare, piuttosto che usare ciecamente J avaScript per forzare l'elemento visibile dovresti in realtà fare ciò che un utente finale farebbe per rendere visibile l'elemento. – Ardesco
Si utilizza anche un Thread.sleep che è ancora una cattiva pratica, la cosa corretta da fare sarebbe utilizzare un oggetto WebDriverWait e la classe ExpectedConditions per attendere che l'elemento diventi visibile. Questo è un esempio scadente senza spiegazione e pratica di codice errato -1 – Ardesco
- 1. Come eseguire Google Chrome con Selenium RC?
- 2. Come si carica un file usando Selenium IDE?
- 3. Google Chrome carica solo parzialmente le immagini di sfondo
- 4. Avvio di Chrome tramite Selenium
- 5. Carica file su Google Drive utilizzando ColdFusion
- 6. Come scaricare più file su Chrome con Capybara/Selenium?
- 7. Chrome non carica il foglio di stile
- 8. Carica JQuery in un'estensione di Chrome?
- 9. Google chrome: file di testo auto wrap
- 10. getElementById problema in Google Chrome
- 11. Esecuzione di un'estensione chrome da Selenium WebDriver
- 12. Chiamata sincrona in Google Estensione Google Chrome
- 13. Errore nell'uso di Selenium JS Chrome Webdriver
- 14. Come eseguire i test case Selenium WebDriver in Chrome?
- 15. Estensione Chrome: carica ed esegui script esterno
- 16. Carica file nell'app Express.js
- 17. Tipo MIME per file zip in Google Chrome
- 18. Carica file .war su Google app engine (GAE) utilizzando appcfg
- 19. Google Chrome Forces HTTPS
- 20. Carica più file in CodeIgniter
- 21. HTML5 saveAs supporto in Google Chrome
- 22. Routing angolare di Google Chrome Google Numero
- 23. Google Chrome è integrabile?
- 24. bug di Google Chrome?
- 25. Ottimizzazione carattere Google Chrome
- 26. XSL non funziona in Google Chrome
- 27. WebDriverIO Selenium passa gli argomenti della riga di comando in Chrome dal file config.js
- 28. Rimuovere favicon utilizzando javascript in Google Chrome
- 29. Mostra codice CSS mancante in Google Chrome
- 30. Debug di CSS in Google Chrome
[Ho inviato una risposta utilizzando python qui.] [1] [1]: http://stackoverflow.com/a/11872608/471376 – JamesThomasMoon1979