2016-08-29 9 views
3

ページで「はい」の「いいえ」オプションを選択しようとしています。通常は「クリック()」が機能していません。問題は、オプションを選択することですが、値は入力として送信されず、アプリケーションを続行しようとするとエラーがスローされます。Javascriptエグゼキュータを使用したラジオボタンの選択

試したxpathの違いを試してみてください!以下は

WebElement st_1 = driver.findElement(By.id("app-select-no")); 
((JavascriptExecutor)driver).executeScript("arguments[0].checked = true;", st_1); 

HTML

div class="form-group input-form-group col-xs-6"> 
<input id="app-select-no" class="form-control ng-pristine ng-untouched ng-valid ng-valid-required" type="radio" ng-value="false" ng-model="openAccount.abc" required="" name="affRadioGroup" value="false" aria-checked="true" tabindex="0" aria-required="false" aria-invalid="false"/> 
<label class="field-label-radio text-bold active" ng-class="{active : openAccount.abc==false}" for="app-select-no"> 
<span translate-once="NO_BUTTON">No</span> 
</label> 
</div> 
+0

「しかし:

WebElementメソッドを使用して
driver.get("file:///home/sgupta/Desktop/a.html"); WebElement radio = new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input#app-select-no"))); JavascriptExecutor executor = (JavascriptExecutor)driver.getDriver(); executor.executeScript("arguments[0].checked=true", radio); 

:ここではJavaScriptを使用してとJavaScriptなし(webelementクリックを使用)の両方のための作業コードがあります値は入力として送信されたことはありません "、それについて詳しく説明できますか?あなたはオプションが選択されていると言っていますが、私は問題が何かを得ていません。スローされた例外も投稿できますか? –

答えて

2

あなたはその要素に「いいえ」「はい」を選択しようとしたりしている、私は理解している場合、私は見てみましょう、しかし、私はあなたがクリックされている要素があることがわかりです入力。要素をクリックするだけでなく、入力にも「値」を送信する必要があります。

イムあなたの問題はexecuteScriptとクリックではなく、あなたもこれを試すことができることを推測:

WebElement st_1 = driver.findElement(By.id("app-select-no")); 
((JavascriptExecutor)driver).executeScript("arguments[0].click();", st_1); 

そして、その入力に値を送信するために、ヨーヨーの必要性がこれを行うには:

driver.findElement(By.id("st_1")).sendKeys("value here"); 

希望すると助かります。

+0

入力は単なるラジオボタンなので、sendkeysは必須ではありません。 javascriptの.checked = trueを適用するだけで動作するはずですが、javascriptを実行する前に待機する必要があります。答えを掲載しました。 –

+0

そうです、私はhtml上に@type属性を見ませんでした。 –

+0

JavaScript Executorの使用ラジオボタンを選択できますが、オプションはバックエンドでレンダリングされないため、そのページから移動することはできません! @Satish:私も待っていました。 – Joe

1

javascriptを実行する前に要素を待って問題を解決しました。私はこの部分を取得していないことを恐れている

driver.get("file:///home/sgupta/Desktop/a.html"); 
WebElement radio = new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input#app-select-no"))); 
radio.click(); 
関連する問題