2017-04-04 6 views
2

私は数字を入力し、フィールドからフォーカスを移動する必要があるテキストフィールドを持っており、テキストフィールドの値は自動入力されます。私は先に働いたコードを以下に使用しました。しかし、コードの下で実行/デバッグすると、数字を入力しません。Selenium Webdriver:Robotクラス:テキストフィールドに数値を入力できません。

コード:コード内

public void dwshortname_and_Contract_number_is_entered() throws Throwable { 

    Thread.sleep(5000); 

    driver.findElement(By.id("consumerNamenew")).sendKeys("TestUser"); 

    driver.findElement(By.id("consumerNonew")).sendKeys(""); 

    Robot robot = new Robot();  
    robot.delay(2000); 
    robot.keyPress(KeyEvent.VK_2); 
    robot.keyRelease(KeyEvent.VK_2); 
    robot.keyPress(KeyEvent.VK_0); 
    robot.keyPress(KeyEvent.VK_1); 
    robot.keyPress(KeyEvent.VK_2); 
    robot.keyRelease(KeyEvent.VK_2); 
    robot.keyPress(KeyEvent.VK_2); 
    robot.keyRelease(KeyEvent.VK_2); 
    robot.keyPress(KeyEvent.VK_6); 
    robot.keyPress(KeyEvent.VK_9); 
    robot.keyRelease(KeyEvent.VK_9); 
    robot.keyPress(KeyEvent.VK_9); 
    robot.keyRelease(KeyEvent.VK_9); 
    robot.keyPress(KeyEvent.VK_4); 
    robot.keyPress(KeyEvent.VK_0); 
    robot.keyPress(KeyEvent.VK_TAB);   

} 
+0

私はEclipseのロボットでdebug.keypress(Keyeven.VK_2)という行を開いています。値はEclipse IDEでは出力されますが、アプリケーションのテキストボックスには表示されません。任意の手掛かり – Sowmya

答えて

1

セレンwebdriverを中に組み込みおよびロボットクラスである「のSendKeys」の用法の違いがあります。

のSendKeys():

がこれはドライバとドライバがポイントしているので、あなたが鍵を送信するとき、それは正確にあなたが使用してデバッグしているにもかかわらず(値の要素とプットに行くことを要素に関連付けられています日食)。

ロボットクラス:一方

ロボットは、ドライバや素子ドライバのいずれも指しているとは何の関係もありません。それが知っていることは、キーボードイベント(あなたの場合は数字を入力している)を生成することだけです。したがって、Eclipseを開いてコードを実行すると、カーソルが "eclipse"を指している場所に実際にキーボードイベントが送信されます。

問題が発生すると、手動で実行を妨害しようとすると問題が発生します。スクリプト全体が手動でのやり取りなしで実行されている場合は、うまく動作するはずです。

希望すると助かります!

+0

ワーマンの詳細な説明ありがとうございます。 。私が実行を妨げない場合、数字はテキストフィールドに入力されません。 – Sowmya

+0

あなたはテキストフィールドに入力したことを意味しますか?それともまだ失敗していますか? – Waman

+0

の実行は、テキストフィールドに入る行まで来て、私が言ったようにそこに失敗すると、数値はテキストフィールドに渡されません。 – Sowmya

0

Robot Example

何もこのWebページで提供される例では、各キーストロークの間で使用されている睡眠の方法を示すことを除いて私に飛び出しません。

import java.awt.AWTException; 
import java.awt.Robot; 
import java.awt.event.KeyEvent; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

class Excercise1 { 

    public static void main(String[] args) throws AWTException, InterruptedException {  
     WebDriver driver = new FirefoxDriver(); 
     driver.get("http://spreadsheetpage.com/index.php/file/C35/P10/"); // sample url 
     driver.findElement(By.xpath(".//a[@href=contains(text(),'yearly-calendar.xls')]")).click(); 
     Robot robot = new Robot(); // Robot class throws AWT Exception 
     Thread.sleep(2000); // Thread.sleep throws InterruptedException 
     robot.keyPress(KeyEvent.VK_DOWN); // press arrow down key of keyboard to navigate and select Save radio button 

     Thread.sleep(2000); // sleep has only been used to showcase each event separately 
     robot.keyPress(KeyEvent.VK_TAB); 
     Thread.sleep(2000); 
     robot.keyPress(KeyEvent.VK_TAB); 
     Thread.sleep(2000); 
     robot.keyPress(KeyEvent.VK_TAB); 
     Thread.sleep(2000); 
     robot.keyPress(KeyEvent.VK_ENTER); 
    // press enter key of keyboard to perform above selected action 
} 

}

+0

私は上記のロボットの例を理解しています。しかし、私のシナリオでは、私が書いたコードは一度は動作しましたが、再実行すると再び動作しませんでした。 – Sowmya

+0

また、キーダウンやエンターイベントよりも、テキストフィールドに数値を入力する方法が必要なので教えてください。ありがとう。 – Sowmya

関連する問題