2016-12-22 19 views
0

Seleniumに問題があります。 私は入力タイプのファイルを含んでおり、それを選択しようとしているこのオーバーレイdivを持っています。Selenium:オーバーレイ入力ファイルを選択してください

<div class="xenOverlay attachmentUploader" style="z-index: 9999; top: 92.7px; left: 206px; position: fixed; display: block;"><form action="http://localhost/xenforo/index.php?attachments/do-upload" method="post" enctype="multipart/form-data" class="formOverlay AutoInlineUploader AttachmentUploadForm NoAutoHeader" data-overlayclass="attachmentUploader"> 

<dl class="ctrlUnit"> 
    <dt><label for="ctrl_upload">Upload a File (<span title="1,048,576 bytes">Max 1 MB</span>):</label></dt> 
    <dd id="SWFUploadContainer" data-placeholder="#SWFUploadPlaceHolder" data-trigger="#ctrl_upload"> 
     <span id="SWFUploadPlaceHolder"></span> 
     <input type="file" name="upload" class="textCtrl" onchange="this.blur()" id="ctrl_upload"> 
     <input type="reset" value="Close" class="OverlayCloser button smallButton"> 
    </dd> 
</dl> 

<div class="attachmentConstraints pairsRows"> 
    <dl><dt>Accepted file types:</dt> <dd>zip, txt, pdf, png, jpg, jpeg, jpe, gif, torrent</dd></dl> 


</div> 

<input type="hidden" name="_xfToken" value="1,1482434233,ccadf23a674c4c4b9def910cf5d55cea4b44ab2a"> 
<input type="hidden" name="hash" value="a9288bd75c0c87638d9057237511e16c"> 
<input type="hidden" name="content_type" value="post">   
<input type="hidden" name="key" value=""> 
<input type="hidden" name="content_data[node_id]" value="3"> 

私はidでとXPathによる入力タイプのファイルを選択しようとしましたが、私だけでエラーを与える日食ました。

WebElement elem = driver.findElement(By.xpath("//*[@id='ctrl_upload']")); elem.sendKeys("C://e.txt");

私は、Windows 10上でChromeDriverで

UPDATEセレン3.0.1を使用しています:

全コード:

静的な無効createNewThread(webdriverをドライバ、文字列のカテゴリ、文字列をタイトル、文字列メッセージ){

String url = "http://localhost/xenforo/index.php?forums/" + category + "/create-thread"; 
    driver.get(url); 

    WebElement ttl = driver.findElement(By.className("titleBOT")); 
    ttl.clear(); 
    ttl.sendKeys(title); 

    WebElement msg = driver.findElement(By.xpath("//*[@id='ThreadCreate']/fieldset[1]/dl[2]/dd/div/div/iframe")); 
    msg.click(); 
    msg.clear(); 
    msg.sendKeys(message); 

    driver.findElement(By.xpath("//*[@id='ctrl_uploader']")).click(); 

    WebElement elem = driver.findElement(By.xpath("//input[@type='file']")); 
    elem.sendKeys("C:\\e.txt"); 

    //driver.findElement(By.xpath("//*[@id='ThreadCreate']/dl[2]/dd/input[1]")).click();  
} 

私はそれが私が探している要素を見つけることはないと思う。この要素は、ボタンをクリックしたときにのみ表示され、古いコンテンツをオーバーレイします。

更新日2: 私はこの問題を発見したと思います。アップロードはフラッシュではなく、htmlではなく、「クリック()」をクリックしてフラッシュボタンをクリックすると、ウェブサイトは実際のユーザーのクリックと同じ反応をしません。

+0

にファイルパスC://e.txtを修正しない願って、私は少し混乱しています、どのような 'WebElement MSG = driver.findElementこの簡単な方法を試してみてください.xpath( "// * [@ id = 'ThreadCreate']/fieldset [1]/dl [2]/dd/div/div/iframe")); iFrameをクリックしてクリアしてからテキストを送信していますか?いくつかのガイドラインがあります。1.テキストフィールドの値だけを入力してクリアすることができます。 2.ページにフレームがある場合、最初にそのフレームに切り替える必要があります。次に、その下に要素を配置する必要があります。 – NarendraR

答えて

0

は、次の試してみてください。

WebElement elem = driver.findElement(By.xpath("//input[@type='file']")); 
elem.sendKeys("C://e.txt"); 

は、それが機能するかどうか、私を知ってみましょう。

+0

eclipseは 'WebElement elem = driver.findElement(By.xpath(" // input [@ type = 'file'] "));' '行のi行にエラーの束を与え続けます。スクリプトを実行してみてください。 – DevPre24

+0

エラーまたは例外トレースを共有してください。 – Mahipal

+0

さらに、このコントロールは** div ** **クラス** xenOverlay attachmentUploader **の下に表示されますか? – Mahipal

0

(することにより、それが

driver.findElement(By.id("ctrl_upload")).sendKeys("C:\\e.txt");

をワーク・うとC:\\e.txt

+0

動作しません。ログファイル:[リンク](http://pastebin.com/XtesFYrV) – DevPre24

+0

plzは実際にあなたがやっていることをいくつかのコードスニペットを提供します。エラーログには、編集可能でないテキストボックスがクリアされているようです – NarendraR

関連する問題