2016-06-16 11 views
1

以下は私のhtmlコードです:私が最初に見つけたいセレンの特定のウェブ要素内の即時ウェブ要素を見つける方法を教えてください。

<div class="abc"> 
    <ul class="a"> 
    <li></li> 
    <ul class="b"> 
    <ul class="c"> 
<div class="abcd"> 
    <ul class="d"> 
    <li></li> 

UL要素

css locator would be = div.abc > ul

しかし、私は、コードの下に使用して、この要素を探したい:

final String firstUlElement = ">ul"; 

@FindBy(css = ".div.abc") 
WebElement divElement; 

List<WebElement> firstUlElement = this.divElement.findElements(By.cssSelector(firstUlElement)); 

しかし、次のエラーをスローする:

The given selector >ul> is either invalid or does not result in a WebElement. The following error occurred: 
InvalidSelectorError: An invalid or illegal selector was specified 
Command duration or timeout: 7 milliseconds 
For documentation on this error, please visit: http://seleniumhq.org/exceptions/invalid_selector_exception.html 
Build info: version: '2.53.0', revision: '35ae25b', time: '2016-03-15 16:57:40' 
System info: host: 'PratikPat-w7', ip: '192.168.56.1', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_71' 
*** Element info: {Using=css selector, value=>ul} 
Session ID: ba99cd84-0640-4af7-870a-50d79d893332 
Driver info: org.openqa.selenium.firefox.FirefoxDriver 

したがって、上記のコードを使用してdiv.abcの後に最初の即時要素を見つける方法はありますか? Thnaksは事前

答えて

1

にあなたがWebElementfindElements()を使用しているとき>を追加する必要はありません。あなたがこの変更を行う場合、それはうまくいくはずです。

final String firstUlElement = "ul"; 

:あなたはfindElements()を使用しています。これは最初のulだけでなく要素のリストになります。 findElement()を使用するつもりはありませんか?

+0

私は '>'を使用しないとすべてのul要素を取りますが、私は 'div.abc'の直下の子を必要とします –

+0

この方法では、 'div.abcの子である' ul' '。私が 'findElements()'を使ってノートで述べたように、これらの要素すべてを含むリストを返します。あなたは最初のものだけを 'findElement()'に変更する必要があります。 – RemcoW

+0

DOM内に 'div.abc> ul'要素がたくさんあるので、うまくいくでしょうが、' div.abc> ul'要素の階層が必要です利用可能な、私はすべてのタイプのロケータのリストが必要です..ありがとう。 –

1

divElement.findElements(By.cssSelector(firstUlElement));>ulのタグをdivElementの下に検索します。そのようなタグはありません。

あなたはこれがあなたの最初の要素を与えるcssSelector

By.cssSelector(div.abc > ul)

それともdivElement

final String firstUlElement = "ul"; 

@FindBy(css = "div.abc") 
WebElement divElement; 

WebElement firstElement = divElement.findElement(By.cssSelector(firstUlElement)); 

を使用して、親と識別子を一緒に使用する必要が>を使用して直接の子を検索するにはそれは見つける。

注:ドットをdiv.abcから削除しました。ドットはクラスを表します。<div>タグでは使用できません。

関連する問題