2017-02-20 5 views
0

私はOutsystem for UIを使用しているWebアプリケーションを持っています。だから、ファイルアップロードボタンファイルをアップロードするために使用ので、「ファイル」= =タイプ「提出」とないタイプのセレンコードですselenium webdriverを使用してファイルをアップロードするRobot APIまたはセレンコマンド送信キーを使用しないで

driver.findElement(By.id("browse")).sendKeys("/path/to/the/file"); 

は私のために働いていません。私は時々正常に動作しますが、フォーカスがウィンドウから削除されているため、ほとんどの時間を失敗しているロボットAPI用のコードだけでなく

WebElement ele = driver.findElement(By.id("Browse")); 
ele.click();  
StringSelection ss = new StringSelection(FilePath); 
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);          
Robot robot = new Robot(); 
robot.keyPress(KeyEvent.VK_CONTROL); 
robot.keyPress(KeyEvent.VK_V); 
robot.keyRelease(KeyEvent.VK_V); 
robot.keyRelease(KeyEvent.VK_CONTROL); 
Thread.sleep(500); 
robot.keyPress(KeyEvent.VK_ENTER); 
robot.keyRelease(KeyEvent.VK_ENTER);  

を試してみました。私のスクリプトは長い間実行されます。そのようなシナリオでは常にウィンドウに焦点を当てておくのは実現可能なアイデアではありません。誰かが私にセレンのアップロードファイルの処理に取り組む他の方法を教えてもらえますか?

+0

ファイルをアップロードする前に、明示的に待機を追加してからコードを実行してみてください。 –

+0

@jainishkapadia明示的に何を待つのですか?私はロボットが定義される前に、私は入力をクリックした後、いくつかの待機があります。しかし、ファイルのアップロードウィンドウが開いたら、私はそれを待つのですか?アップロードウィンドウに焦点を当てるコードはありますか? –

+0

'' HTML 'を共有する –

答えて

0

ここで理解していることは、ウィンドウのポップアップを明示的に待つことができないため、アップロードウィンドウのポップアップが表示されるまで待つことができないことです。この問題は、ロボットクラスを開始する直前にThread.sleep(2000)そのため、作業を開始する前にポップアップウィンドウが表示されます。

関連する問題