2016-08-01 29 views
1

私のプロジェクトでファイルのアップロード機能を自動化しようとしています。問題は2つのアップロードボタンが同じIDと名前を使用していたことです。Selenium Webdriver - 同じIDの複数の要素を持つ隠し要素をクリック

この要素を表示させるユーザー操作はありません。だから私はそれが表示されていない間、要素をクリックするために回避策が必要です。

org.openqa - 私は例外をキャッチしてい

WebElement fileInput = driver.findElement(By.name("indexPicName")); 
String js = "arguments[0].style.height='auto'; arguments[0].type='visible';"; 
((JavascriptExecutor) driver).executeScript(js, fileInput); 
fileInput.sendKeys("E:\\testUploadPromotion\\16.jpg"); 

https

マイコード:

はここで、HTMLのイメージと私のプロジェクトの写真をです。 selenium.ElementNotVisibleException - 要素が現在表示されていない ではないため、ma yは相互作用しない。

私はJavascriptExecutorを試してみました。しかし、正確な構文を見つけることができません。画像のアップロード中に

エラー:

Error auto created textfield

答えて

0

あなたが目に見えるtextボックスにhiddenボックスを変換したい場合は、以下のように.setAttribute('type', 'text')を使用する必要があります -

WebElement fileInput = driver.findElement(By.id("indexPicName")); 
String js = "arguments[0].setAttribute('type', 'text');return arguments[0]"; 
fileInput = (WebElement)((JavascriptExecutor) driver).executeScript(js, fileInput); 
fileInput.sendKeys("E:\\testUploadPromotion\\16.jpg"); 

それともあなたが望むならばにfile要素を入力してください: -

WebElement fileInput = driver.findElement(By.id("indexPic")); 
fileInput.sendKeys("E:\\testUploadPromotion\\16.jpg"); 

そして、そこに同じIDと名前を持つ2つのfile入力要素があり、あなたはfindElementsを使用しようとすると、以下のようにのSendKeysにインデックスを使用して第二の要素にファイルをアップロードする場合: -

List<WebElement> fileInputs = driver.findElements(By.id("indexPic")); 
    fileInputs.get(1).sendKeys("E:\\testUploadPromotion\\16.jpg"); 

はそれがお役に立てば幸いです。 。:)

+0

こんにちは、私はあなたのコードを実装しようとしています。しかし、それはファイルをアップロードするために働いていないようだし、それは自動的にテキストフィールドを作成しました。 –

+0

@thronewax隠しテキストフィールドを表示テキストフィールドに変換するだけです。私はちょうどそれを見えるようにする方法を与えています...あなたは実際に何をしたいですか? –

+0

テキストフィールドを作成していないファイルをアップロードしたいです。申し訳ありませんが、私はあなたを誤解させます –

関連する問題