2017-12-17 7 views
0

Guys私はSelenium Automationを学んでいます。Selenium Javaを使用して別のulタグ内のテキストを印刷するには

私は以下のようにウェブサイトを設計しました。

私のHTMLコード:

<!DOCTYPE html> 
<html> 
<head><title>Shop</title></head> 
<body> 
<ul> 
    <li><a href="www.rendertofruitsection.com">Fruits</a> 
     <ul> 
      <li><a href="www.addbananatocart.com">» Banana</a></li> 
      <li><a href="www.addappletocart.com">» Apple</a></li> 
      <!--List goes on--> 
     </ul> 
    </li> 
    <li><a href="www.redertovegsection">Vegetable</a> 
     <ul> 
       <li><a href="www.addcapcicumtocart">» Capsicum</a></li> 
       <li><a href="www.addtomatotocart.com">» Tomato</a></li> 
       <li><a href="www.addoniontocart">» Onion</a></li> 
       <!--List goes on--> 
     </ul> 
    </li> 
    <li><a herf="www.nonveglink.com">Non Veg Section</a></li> 
    <!--List goes on--> 
</ul> 
</body> 
</html> 

当初、私はJavaのセレンを使用して<a>タグ内に提示されたすべてのテキストを一覧表示することを計画。

私はこのコードを以下に書いています。

私のJavaコード:私が得た、必要に応じ何

public class shop 
{ 
    public static void main(String[] args) 
    { 
     WebDriver driver= new ChromeDriver(); 
     driver.get("www.myshopping.com"); 
     List<WebElement> text= driver.findElements(By.xpath("//a")); 
     for(int i=0;i<text.size();i++) 
     { 
      System.out.println(i+". "+text.get(i).getText()); 
     } 
    } 
} 

出力:

Output what I got:      | Output What I need: 
1. Fruits        | 1. Fruits 
2.          | 2. Banana 
3.          | 3. Apple 
4. Vegetable       | 4. Vegetable 
5.          | 5. Capsicum 
6.          | 6. Tomato 
7.          | 7. Onion 
8. Non Veg Section      | 8. Non Veg Section 

Guysは単にセレンJavaを使用して、内側<ul>その<li>タグ内のテキストを取得する方法を、少しヒントを教えてください。

私はこれをいくつか試しましたが、私はここにこだわっています。

public class shop 
{ 
    public static void main(String[] args) 
    { 
     WebDriver driver= new ChromeDriver(); 
     driver.get("www.myshopping.com"); 
     List<WebElement> text= driver.findElements(By.xpath("//li[ul]/a")); 
     for(int i=0;i<text.size();i++) 
     { 
      System.out.println(i+". "+text.get(i).getText()); 
      WebDriverWait wait = new WebDriverWait(i, 10); 
      List<WebElement> innerText = wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath(".//following-sibling::ul//a[text()]"))); 
      for(int j=0; j<text.size(); j++) 
      { 
       System.out.println(i+". "+j+". "+text.get(j).getText()); 
      } 
     } 
    } 
} 
+0

このコードは私にあなたが探しているすべてのテキストを与えた:リンクをたどる

public static void main(String[] args) { WebDriver driver= new FirefoxDriver(); driver.get("file:///C:/Users/abdul%20awal/Desktop/test.html"); List<WebElement> text= driver.findElements(By.cssSelector("ul ul a")); for(int i=0;i<text.size();i++) { System.out.println(i+". "+text.get(i).getText()); } } 

CSSセレクタ参考:それはちょうど、ロケータの変更です。また、0から7までの数字を教えてくれました。***正確な***コードと出力を提供してください。 – Guy

+0

'getAttribute(" innerText ")'は私のケースで動作します。ありがとうございました – Srini

答えて

0

<a>の内側に提示されたすべてのテキストを表示するには:

は、項目タイプの外側のループを適用しようと動的に生成されるように思われる項目について内部ループを追加し、あなたに

+0

'getAttribute(" innerText ")'は私のケースで動作します – Srini

0
WebElement x = driver.findElement(By.xpath("xpathOfTheElement")); 
String text = x.getAttribute("innerText"); 
System.out.println(text); 
+0

'getAttribute(" innerText ")'私の場合には – Srini

0

ありがとうございましたタグを使用すると、次のコードブロックを試すことができます。

public class shop 
{ 
    public static void main(String[] args) 
    { 
    WebDriver driver= new ChromeDriver(); 
    driver.get("www.myshopping.com"); 
    List<WebElement> atags = driver.findElements(By.tagName("a")); 
    for(WebElement atag:atags) 
     System.out.println("Text is : " + atag.getAttribute("innerHTML")); 
    } 
} 
+1

'getAttribute(" innerText ")'は私のケースで動作します。しかし、あなたのwait.untilはこの初心者のために理解できないビットです。ありがとうございます – Srini

関連する問題