2017-11-28 13 views
0

スキャナクラスを使用してユーザー入力を送信しようとしましたが、javaScriptExecutorを使用してテキストボックスに入力しましたが、スキャナクラスによって取得された値は取得されません。セレンのjavaScriptExecutorでユーザー入力を送信する方法

Scanner first_captcha = new Scanner(System.in); 
      System.out.println("Please enter the captcha"); 
      int Captcha = first_captcha.nextInt(); 

      @SuppressWarnings("unused") 
      WebElement captcha = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("captcha"))); 
      JavascriptExecutor jse = (JavascriptExecutor) driver; 
      jse.executeScript("document.getElementById('captcha').value = Captcha"); 


    /* Value is going to the textbox is "Captcha" but I just wanted to send the value which user provided in the scanner class. */ 
+0

'JavascriptExecutor'を使用する理由? 'sendKeys()'に関する問題? – DebanjanB

+0

私がvalueを送信しようとしているフィールドは、sendkeys()を使用して動作していません。このフィールドは、driver.findElement()を使用して検出されないためです。したがって、私はjavaScriptExecutorを使用しようとしています。詳細が必要な場合はお知らせください。 @DebanjanB –

答えて

0
ここ
jse.executeScript("document.getElementById('captcha').value = Captcha"); 

Captchaあなたが設定されているハードコードされた文字列です。 Scannerクラスを使用して取得する変数としてCaptchを渡す必要があります。コードの下

用途:

JavascriptExecutor jse = (JavascriptExecutor) driver; 
jse.executeScript("document.getElementById('captcha').value = "+Captcha+""); 
0

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

jse.executeScript(String.format("document.getElementById('captcha').value = %d", Captcha)); 
0

あなたの実行文字列は、整数値のためのプレースホルダを持っていません。したがって、この構文に従ってjse.executeScript呼び出しをリファクタリングする必要があります。

jse.executeScript("document.getElementById('captcha').value = "+Captcha+";"); 
+0

ありがとう@Manmohan_singhが正しく動作しています。 –

関連する問題