2017-12-23 3 views
-1

ich Datei hochzuladen versuchen, mit Fehlern mit sendkeys() aber Selen WebDriver Test nicht bestanden:Datei-Upload über Tastaturbefehle() scheitern an input type = Datei nicht sichtbar auf der Webseite

"The element is not yet visible: By.xpath: //input[@id='upload-file-pc']" 

Hier ist die html:

<input id="upload-file-pc" class="file-field-input" type="file" onchange="return validateFileSelected(this);" name="upload-file-pc"/> 
<a class="dropbox-dropin-btn dropbox-dropin-default file-field-link" href="Javascript:void(0);"> 
<span class="dropin-btn-status"/> 
Choose from Computer 
</a> 

Code:

String fileLocation = CommonConstants.TEST_FILE_LOCATION + this.config.getString("simpletext"); 
     logger.info("text file location: {}", fileLocation); 
     WebExecutionHelper.waitForElementVisible(driver, By.xpath("//input[@type='file']")).sendKeys(fileLocation); 

Upload-Button Image: 012.

Bitte helfen Sie wahrscheinlich

+0

Können Sie den Code hinzufügen, wie Sie – NarendraR

+0

Added Code in Beschreibung versuchen – RahulxP

+0

Der '' nicht Text akzeptieren. 'sendkeys()' funktioniert möglicherweise nicht. – DebanjanB

Antwort

0

Selen nicht auf versteckte Elemente funktioniert. Was können Sie tun, ist es zwingen mit executeScript zu erscheinen:

// get <input> element 
input = driver.findElementById("upload-file-pc") 

// make it visible 
driver.executeScript(` 
    var input = arguments[0]; 
    input.className = ''; 
    input.style.display = 'block'; 
    input.style.position = 'fixed'; 
    input.style.bottom = 0; 
    input.style.left = 0; 
    `, input) 

// set the file 
input.sendKeys(fileLocation) 
0

Selen kann nicht funktionieren (z Tastaturbefehle, klicken) auf unsichtbares Element.

Sie können den absoluten Pfad der hochgeladenen Datei im Hintergrund durch executeScript senden.

Java-Beispiel:

WebElement fileUpload = driver.findElement(By.css("#upload-file-pc")); 
    JavascriptExecutor js = (JavascriptExecutor) driver; 
    js.executeScript("return arguments[0].value=arguments[1];", fileUpload); 
Verwandte Themen