2017-08-19 5 views
0

フレームを含むウェブサイト(ただし、トップウィンドウに表示されています)に要素(「791」を含む)を配置しようとしています。なんらかの理由で、Seleniumは要素を見つけることができません。それを見つける正しい方法は何ですか? ありがとう!Seleniumを使ってフレームを持つウェブサイト上の要素を見つける方法は?

public class StarOnline { 

    static WebDriver driver; 
    static String baseUrl; 

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

     baseUrl = "https://www.staronline.org.uk/demo_register.asp"; 

       System.setProperty("webdriver.chrome.driver", "C:\\Automation\\libs\\Drivers\\chromedriver.exe"); 
     driver = new ChromeDriver(); 

       driver.get(baseUrl); 

     List<WebElement> checkbox = driver.findElements(By.className(".frm")); 
     System.out.println("list size = " + checkbox.size()); 
     for (WebElement ell:checkbox) 
     { 
      if (ell.getText().contains("791")) 
       ell.click(); 
      else System.out.println("Element not found"); 
      break; 
     } 
+0

提供したURLのテキスト「791」を含む要素を私にアップデートできますか? – DebanjanB

答えて

1

これは、この質問の直接の回答ではなく単なるアプローチです。 switchToFrameメソッドを使用する必要があります。

現在のフレームの兄弟に切り替える必要がある場合は、おそらくすべてのフレームから出て、ルートからその兄弟フレームに切り替える必要があります。これは

//Come to root from Frame 1 
driver.switchTo().defaultContent(); 

//Now switch to Frame 2 
driver.switchTo().frames("Frame 2"); 

:フレーム1の外側にあるフレーム2に

driver.switchTo().frames("Frame 1"); 

はスイッチ:たとえば、ルートから1フレームに

Selenium Handling Frames

スイッチの下の画像を検討入れ子フレーム/ iFrameにも適用可能です。お役に立てれば。

ありがとうございました。

0

見つけようとしている要素は、idとしてと表示され、ドロップダウン内のoption要素です。ドロップダウンはTop Windowにありますので、要素を配置するためにフレームを切り替える必要はありません。そこで、791からselectByValue()までの方法で、Selectクラスのオプションを選択します。注意深く観察すると、テキスト791のオプションには、表示されるテキストAlcohol Starが含まれています。したがって、オプションを選択するときは、ドロップダウンからAlcohol Starが選択されます。最小限のコードは次のとおりです:

package demo; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.support.ui.Select; 

public class Q45770184_frame 
{ 
    static WebDriver driver; 
    static String baseUrl; 

    public static void main(String[] args) 
    { 

    baseUrl = "https://www.staronline.org.uk/demo_register.asp"; 
    System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe"); 
    driver = new ChromeDriver(); 
    driver.get(baseUrl); 
    WebElement drop_down = driver.findElement(By.id("mainstar_")); 
    Select select = new Select(drop_down); 
    select.selectByValue("791"); 
    } 
} 
関連する問題