2017-12-23 6 views
-1

に表示されないファイルに失敗し、私はsendkeys() を使用してファイルをアップロードしようとしていますが、セレンwebdriverをテストがエラーで失敗します。ここではファイルアップロード()=による入力タイプにWebページ

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

は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> 

コード:

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); 

アップロードボタンイメージ:

+0

あなたが説明 – NarendraR

+0

追加のコードを試してみましたどのようにコードを追加することができます。 'sendkeys()'は動作しないかもしれません。 – RahulxP

+0

'' 受け入れないテキストで – DebanjanB

答えて

0

セレンはおそらく隠された要素に動作しません助けてください。あなたにできることはexecuteScriptで表示されるようにそれを強制です:

// 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

セレンは、目に見えない要素に(例えばのSendKeys、クリック)を操作することはできません。

アップロードされたファイルの絶対パスは、バックグラウンドでexecuteScriptによって送信できます。

Javaの例:

WebElement fileUpload = driver.findElement(By.css("#upload-file-pc")); 
    JavascriptExecutor js = (JavascriptExecutor) driver; 
    js.executeScript("return arguments[0].value=arguments[1];", fileUpload); 
関連する問題