2017-05-26 4 views
0

とセレン(Java)のことでを使用して、これは素晴らしい作品にはどうすればよいは私が親要素内の子を探すために、次のセレンを使用しようとしています既存の要素

ExpectedConditions.presenceOfNestedElementLocatedBy(parent, By.xpath(xpath)) 

は今、私は方法をしたいことxPathに一致するすべての要素を返しますが、驚いたことに署名にはWebElementI would expectの代わりにByが必要です。

他の要素を取得するためにWebElementをbyに変換するにはどうすればよいですか?

public class Demo { 

    static WebDriver driver; 

    public static void main(String[] args) 
    { 

     System.setProperty("webdriver.chrome.driver", "c:\\eclipse\\selenium\\chromedriver.exe"); 

     driver = new ChromeDriver(); 

     driver.get("http://google.com"); 


     By x = By.xpath("//div"); //or your By.xpath(xpath) 
     List<WebElement> allItem = getChildElements(x); 

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


     for(WebElement item : allItem){ 

      System.out.println(item.getText()); 
     } 



    } 

    public static List<WebElement> getChildElements(By x){ 

     List<WebElement> allElems = driver.findElements(x); 
     return allElems; 

    } 
} 
+0

"驚いたことに署名には「By」が必要です。 – acdcjunior

+0

@acdcjunior次のリンクを参照してください。 'presenceOfNestedElementsLocatedBy' – Jackie

+0

「WebElementをbyに変換して、他の要素を取得するにはどうすればよいですか?」 - >できません、それはバニラセレンでは不可能です。たぶん[それの上にあるフレームワーク](http://github.com/seleniumquery/seleniumquery)がそれを行う可能性があります。 – acdcjunior

答えて

0

は、ここでの例です。コードはこのようなものになります。

WebElement parent = driver.findElement(By.xpath("")); 
WebElement child = driver.findElement(By.xpath("")); 
new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfNestedElementLocatedBy(parent, (By)child)); 

希望します。ありがとう。

+0

私はByを使う方法を理解しています、それは私の質問ではありませんでした。 Xpath文字列や要素名、その他の情報ではなく、WebElementを持っているときにどうすれば使用できますか? – Jackie

+0

@Jackie:親要素を取得するには、まず何らかの種類のロケータが必要です。 – kushal

0

がクラスのキャストをやってみてくださいを続行:あなたはBYを渡すことにより、すべての子要素を取得するため

+0

presenceOfNestedElementsLocatedByは私のものですnotOfNestedElementLocatedByを話す。それは、親がaであることを必要とする。 – Jackie

+0

質問を更新する必要がありましたか? –

+0

@Jackieクラスキャスティングはあなたのために働いていませんか? –

関連する問題