2017-11-17 9 views
1

この行の1つのテーブルには、以下のものが含まれています。別の文字列(動的n個のスパンが使用可能)でスパンクラスの値を取得します。 1111 FRANKLIN STREET OAKLAND, CALIFORNIA 94607-5200を意味します。私は、XPath(表と反復)以下で簡単に譲受人名を取得SpanクラスgetText()でJavaを使用したSelenium WebDriver

HTML

<td colspan="5"> 
    <p class="caption">Assignee</p> 
    <a class="ng-binding ng-scope" alt="View assignment(s)" ui-sref="search.resultAssignee(goToAssignee(assignee))" ng-repeat-start="assignee in abstract.patAssigneeName track by $index" href="#assigneeName=THE%20REGENTS%20OF%20THE%20UNIVERSITY%20OF%20CALIFORNIA">UNIVERSITY OF CALIFORNIA</a> 
    <p class="ng-scope"> 
     <span class="ng-binding ng-scope" ng-if="abstract.patAssigneeAddress1[$index] !== ''">1111 FRANKLIN STREET<br></span> 
     <span class="ng-binding ng-scope" ng-if="abstract.patAssigneeCity[$index] !== '' && abstract.patAssigneeState[$index] !== ''">OAKLAND, CALIFORNIA 94607-5200<br></span> 
     <span class="ng-binding"> </span> 
    </p> 
    <br class="ng-scope" ng-repeat-end=""> 
</td> 

String recAssignee = driver.findElement(By.xpath(" //*[@id='printable-area']/table[" + r + "]/tbody/tr[4]/td/a")).getText().replace("Assignee", ""); 

してください時間elpを実行してスパンクラスの値を取得します。

+0

あなたはすべて一緒に '1111 FRANKLIN STREETオークランド、カリフォルニア州94607-5200'を印刷しますか?または、「1111 FRANKLIN STREET」または「OAKLAND、CALIFORNIA 94607-5200」のみを印刷したいですか? – DebanjanB

答えて

2

まず、すべてのスパン要素を取得し、それらをWebElementリストに保持します。次に、ループ内でgetText()を使用して要素を取得します。次のように使用できます。

List<WebElement> allSpanElements = driver.findElements(By.xpath(" //*[@id='printable-area']/table[" + r + "]/tbody/tr[4]/td/p[2]/span")); 
for (WebElement elem : allSpanElements) { 
    String address = elem.getText(); 
    //System.out.println(address); 
} 

文字列配列の値を保持するために使用できます。

また、代わりのようなのxpathのクラス名を使用して試すことができます - あなたは、XPathの下で簡単に譲受人名を取得することができます述べたように

By.className("ng-binding ng-scope"); 
+0

@Prabuあなたはあなたの答えを得ましたか? –

+0

@プラブあなたから知って嬉しいです。私は既に他の人がそれから援助を得ることができるように質問に投票しました。 –

0

:に、

String recAssignee = driver.findElement(By.xpath(" //*[@id='printable-area']/table[" + r + "]/tbody/tr[4]/td/a")).getText().replace("Assignee", ""); 

今スパンクラスの値を別の文字列で取得します。 1111 FRANKLIN STREET OAKLAND , CALIFORNIA 94607-5200、次のコードブロックを使用することができます。

List<WebElement> myElements = driver.findElements(By.xpath("//*[@id='printable-area']/table[" + r + "]/tbody/tr[4]/td/a[@class='ng-binding ng-scope']/span[@class='ng-binding ng-scope']")); 
List<String> partA = new ArrayList<String>(); 
List<String> partB = new ArrayList<String>(); 
for(int i=0; i<myElements.size(); i=i+2) 
{ 
    String textA = myElements.get(i).getAttribute("innerHTML"); 
    partA.add(textA); 
} 

for(int j=1; j<myElements.size(); j=j+2) 
{ 
    String textB = myElements.get(j).getAttribute("innerHTML"); 
    partB.add(textB); 
} 
System.out.println("The Complete Addresses are : "); 
for(int k=0; k<partA.size();k++) 
    System.out.println(partA.get(k) + " , " + partB.get(k));  
関連する問題