2016-11-09 12 views
0

Selenium webdriverでファイルをアップロードする必要があります。 しかし、私はのようなものを使用している場合:タグ<input type = "file">の属性 "hidden"を削除する方法

driver.findElement(By.xpath("//input[@type='file']")).sendKeys(file.getAbsolutePath()); 

その後、私はエラーを持っている:

org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with 
Command duration or timeout: 128 milliseconds 
Build info: version: '3.0.1', revision: '1969d75', time: '2016-10-18 09:49:13 -0700' 
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_91' 
Driver info: org.openqa.selenium.firefox.FirefoxDriver 

だから私は、私はjsファイルを使用して属性隠しを削除する必要があると思いますし、私はこのコードが見つかりました:

JavascriptExecutor jse = (JavascriptExecutor)driver; 
jse.executeScript("document.getElementsByTagName('*')[0].removeAttribute('hidden');"); 

しかし、私のために働いていません。

これは、私が働いコードです:

<label name="file" ng-model="file" ngf-accept="pattern" ngf-pattern="pattern" ngf-select="uploadSubmit($file)" ng-disabled="isUploadDisabled()" type="button" class="button button--large ng-pristine ng-untouched ng-valid ng-empty"> 
       <span translate="" class="button__text">Загрузить из файла .xls</span> 
       <input type="file" hidden="" ng-disabled="isUploadDisabled()"> 
      </label> 

答えて

0

これは動作するはずです:

それを試してみてください。

console.log(document.getElementsByTagName("input")[0].removeAttribute('hidden')); 

OR

if (document.all !== undefined) 
{ 
    var allElements = document.all; 
} 
else 
{ 
    var allElements = document.getElementsByTagName("*"); 
} 

allElements[0].removeAttribute('hidden'); 
+0

私は、コードの一部を追加しました、あなたは私は私の答えを更新した –

+0

particulary私の状況をチェックしてください可能性があり、私がチェックしていると、それはので、気にしてください投稿 – Jigar7521

0

私はwをoeldは、実際のユーザーアクションをシミュレートするためにSeleniumを使用するため、コードを通じてJSアプローチを使用してhidden属性を削除しないことをお勧めします。

ユーザーがいずれかのボタンをクリックして、そのサイトにそのdivが表示されている場合と同様です。私はあなたが最初に同じコンポーネントをトリガし、それが表示されたら隠しコンポーネントを使用することをお勧めします。

0

まず、要素がDOMにロードされるように待機時間を追加してみます。 これ以外の場合は、以下のコードを使用して要素を表示させてください。

WebElement element = yourWebDriverInstance.findElement(Locator); 

((JavascriptExecutor) yourWebDriverInstance).executeScript(arguments[0].style.height='auto'; arguments[0].style.visibility='visible';, element); 
関連する問題