2017-07-31 13 views
1

複合クラスを持つスパンに特定のテキストが存在するかどうかを確認する必要がありますが、セレンはこの要素をページ上でまったく見つけられません。セレンのWebdriverによってページに要素が見つかりません

私はすでにclassとxpathで試したことがありますが、それは見つかりません。

私はテキストを取得する必要が完全なHTMLコード:

<span class="mn-person-info__occupation mn-person-info__occupation--card-layout Sans-13px-black-55%"> 
     Consultor de RH - HProjekt 
</span> 

完全なHTMLコード:

<div class="mn-person-info__card-details mt1"> 
<a data-control-name="pymk_profile" href="/in/kaique-soares-04798354/" id="ember1053" class="mn-person-info__link ember-view"> <span class="visually-hidden">Nome do usuário</span> 
    <span class="mn-person-info__name 
     mn-person-info__name--card-layout Sans-15px-black-85%-semibold"> 
     Kaique Soares 
    </span> 
    <span class="visually-hidden">Cargo do usuário</span> 
    <span class="mn-person-info__occupation 
     mn-person-info__occupation--card-layout Sans-13px-black-55%"> 
     Consultor de RH - HProjekt 
    </span> 
</a> 
    <div class="mn-person-info__shared-insights display-flex justify-center pt1 ph2"> 
    <button data-control-name="see_all_common_connections" class="mn-person-info__shared-insights-btn Sans-13px-black-55%" data-ember-action="" data-ember-action-1256="1256"> 
     <span class="mn-person-info__shared-insights-icon svg-icon-wrap"><li-icon aria-hidden="true" type="in-common-icon" size="small"><svg viewBox="0 0 24 24" width="24px" height="24px" x="0" y="0" preserveAspectRatio="xMinYMin meet" class="artdeco-icon"><g class="small-icon" style="fill-opacity: 1"> 
     <path d="M11,3C9.9,3,8.9,3.4,8,4C5.8,2.3,2.7,2.8,1,5s-1.2,5.3,1,7c0.9,0.6,1.9,1,3,1s2.1-0.4,3-1c2.2,1.7,5.3,1.2,7-1s1.2-5.3-1-7C13.1,3.4,12.1,3,11,3z M1.9,8c0-1.7,1.4-3.1,3.1-3.1c0.6,0,1.2,0.2,1.7,0.5c-1,1.6-1,3.6,0,5.2c-1.4,1-3.4,0.6-4.3-0.8C2.1,9.2,1.9,8.6,1.9,8z M11,11.1c-0.6,0-1.2-0.2-1.7-0.5c1-1.6,1-3.6,0-5.2c1.4-1,3.4-0.6,4.3,0.9s0.6,3.4-0.9,4.3C12.2,10.9,11.6,11.1,11,11.1z"/> 
     </g></svg></li-icon></span> 
     <span class="mn-person-info__shared-insights-count"> 
      Fernando Abrantes e mais 76 pessoas 
     </span> 
    </button> 
</div> 

</div> 

私は、これらの方法を試してみましたが、でも待ちを入れて、まだ見つけることができません要素:

String text = driver.findElement(By.className("mn-person-info__occupation.mn-person-info__occupation--card-layout.Sans-13px-black-55%")).getText(); 
System.out.println(text); 

driver.findElement(By.className("mn-person-info__occupation.mn-person-info__occupation--card-layout.Sans-13px-black-55%")).getText(); 

WebElement text = driver.findElement(By.className("mn-person-info__occupation.mn-person-info__occupation--card-layout.Sans-13px-black-55%")).getText(); 
System.out.println("text"); 
+1

で試す場合は、代わりに変数 'text'を印刷することを意味するものではありませんか文字列リテラル '' text ''の中身は? - 編集:同じクラス名の複数の要素がありますか?もしそうなら、あなたは一つの要素の代わりに一致する要素の配列を得ているかもしれません(そして、配列の '.getText()'はエラーを出すでしょう) – ochi

+1

@ochi よく書いてありますが、コードは正しかった、ありがとう。 –

答えて

2

スペースで区切られたクラスを取りますが、あなたは、ドットを使用しているBy.className方法。

一つのクラスは、あなたのケースで十分なはずです:

By.className("mn-person-info__occupation--card-layout") 

、またはCSSセレクタを持つ:

By.cssSelector(".mn-person-info__occupation--card-layout") 

注クラスのいくつかは%などの不正な文字を持っていること。人のために、あなたは、属性のフィルタでCSSセレクタを使用する必要があります:

By.cssSelector(".mn-person-info__occupation--card-layout[class*='Sans-13px-black-55%']") 
+0

It Worked By.cssSelector( "。mn-person-info__occupation - カードレイアウト[クラス* = 'Sans-13px-black-55%']」)。 –

1

このxpathで試してください。

String content = driver.findElement(by.xpath("//div[class='mn-person-info__card-details mt1']/a[1]/spam[3]")).getText(); 

これが役立ちます。ありがとう。問題はことでセレクタによって引き起こされる

WebElement myelement = driver.findElement(By.xpath("//div[@class='mn-person-info__card-details mt1']a[1]/span[3]")); 

//Now get the text. 
String mytext = descriptionEle.getText(); 
+0

このような要素がありません:要素を見つけることができません: –

+0

暗黙の待機を使用していますか?サイトのURLを取得できますか? –

1

はこれを試してみてください。それはwonkieに見え、セレンはそれを処理できません。セレンはセレクターに%があるのが好きではありません。

クラス名で使用したい場合は、より簡単なルートに進んでください。

String text = driver.findElement(By.className("mn-person-info__occupation")).getText(); 
    System.out.println(text); 

または別のオプションを使用してください。

String text2 = driver.findElement(By.className("mn-person-info__occupation--card-layout")).getText(); 
System.out.println(text2); 
+0

無効なセレクタ:次のエラーのため、xpath式// div [@ class = 'mn-person-info_card-details mt1'] a [1]/span [3]を持つ要素を見つけることができません: SyntaxError:Failed 'document'の 'evaluate'を実行するには、文字列 '// div [@ class =' mn-person-info_card-details mt1 '] a [1]/span [3]'は有効なXPath式ではありません。 –

0

1

あなたはこの

String content = driver.findElement(by.xpath("//span[class='mn-person-info__occupation']")).getText(); 
+0

そのような要素がありません:要素を見つけることができません: –

+0

@PauloRobertoでも変更されるBy.xpath? 私は上記のコードがtypoだったことを認識しています 'String content = driver.findElement(By.xpath(" span class = 'mn-person-info__occupation') "))getText(); System.out.println(content); ' –

関連する問題