2016-08-03 7 views
1

名前= "preferred_color"のラジオボタンの数を取得しようとしています。私はいつもカウント= 0を得る。何が間違っているの?その名前のページ「http://www.quackit.com/html/codes/html_radio_button.cfm」に6つのラジオボタンがあります。以下ページ内のラジオボタンの数が常に0になるのはなぜですか?

コードである:この場合

import java.util.List; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 

public class RadioButtons { 

    public static void main(String[] args) throws Exception { 

     WebDriver driver = new FirefoxDriver(); 
     driver.navigate().to("http://www.quackit.com/html/codes/html_radio_button.cfm"); 

     Thread.sleep(4000); 

     List<WebElement> radio_button = driver.findElements(By.name("preferred_color")); 

     System.out.println(radio_button.size()); 

答えて

1

名は、任意の他の要素のために存在している場合、cssSelectorまたはXPathを使用しよう。あなたが最初に以下のようにはiframeに切り替える必要がありので、ウルHTMLでそこにはまた、IFRAMEの存在:あなたは要素を取得するには、正確な要素ロケータを指示する必要があり

List<WebElement> radio_button = driver.findElements(By.cssSelector(" form>input[name = 'preferred_color']")); 

driver.switchTo().frame(driver.findElement(By.cssSelector(".result[name = 'result1']"))); 

は今すぐ下記のコードを使用しますまたは要素。

他のラジオボタンを取得するには、別のiframeに切り替える必要があります。

+0

正しい結果が得られました。ありがとう。 – Chuchoo

0

私が間違っている場合は私を修正してください。ただし、ウェブドライバはiframeで検索しません。そして、そのページには、

ページに移動した後、

driver.switchTo().frame("resutl1"); 

「resutl1」最初iframeの名前であることをやろう...すべてのラジオボタンがiframeしているようです。

"3"と表示されます。