2016-07-26 2 views
2

以下のURLの左側のデータリストにすべてアクセスしようとしていますが、クラスとIDの正しい組合せを見つけることができません。助けてください。以下は私のコードです。セレンコードはウェブページからファセットデータを抽出していません

URL:http://www.topshop.com/en/tsuk/category/clothing-427/jackets-coats-2390889/N-86tZdgl?No=0&Nrpp=20&siteId=%2F12556

コード

[![public void f() { 
     driver.get("http://www.topshop.com/en/tsuk/category/clothing-427/jackets-coats-2390889/N-86tZdgl?No=0&Nrpp=20&siteId=%2F12556"); 
     List<WebElement> faccet = driver.findElements(By.className("filter_wrapper").className("ce3_sleeve_type").tagName("li")); 
     System.out.println(faccet.size()); 
     for(WebElement a : faccet) 
     { 
     String b = a.getText(); 
     System.out.println(b); 
     } 
    }][1]][1] 

答えて

1

これを試してください:そのリスト内のすべてのフィルタ項目のカテゴリを取得するためのコードの下に使用してください

List<WebElement> faccet = driver.findElements(By.CssSelector("div[class='filter_wrapper'] div div span"); 
+0

あなたが私に9つのNULL値ではなく、私が探しています出力を与えている示唆しているコード。 –

1

私は、XPathを使用していますXpathで使用されるクラスをいつでもcssSelectorsに変更することができます

public void f() 
{ 
List<WebElement> faccet = driver.findElements(By.xpath("//div[@class='filters jspScrollable']//div[@class='filter_group_label']/span[@class='lbl']")); 
      System.out.println(faccet.size()); 
      for(WebElement a : faccet) 
      { 
      //to get the text of each element and get into view for reading 
       ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", a);   
       String b = a.getText(); 
      System.out.println(b); 
      } 

    } 
+0

あなたが共有した上記のコードは、色、サイズなどのフィルタの値を取得することができます。しかし、私は黒、青などを抽出する必要があります色のようなこれらのフィルタの値を探しています。 –

+0

//これをtext()内で使用します。String b = a.getAttribute( "title"); – Nagaraju

+0

リスト faccet = driver.findElements(By.xpath( "// div [@ class = 'filters jspScrollable'] // ul/li/a"));内側にリストされた商品のために@Pankaj Sharma – Nagaraju

1

これらの値がブラウザに表示されないと考えられる場合、Seleniumは値を出力しません。すべてのファセットとその値を印刷するには、印刷する前に各要素にスクロールします。

easytestフレームワーク(https://github.com/codezombies/easytest)と以下のコードを使用して、説明したことを実行できました。

public class TopShopTest { 

@Test 
public void test() throws Exception { 

    final EasyTestOptions options = new EasyTestOptions(); 
    options.setLogger(new NoOpLogger()); 
    try (EasyTest easy = new EasyTest(DriverType.CHROME, options)) { 

     easy.start("http://www.topshop.com/en/tsuk/category/clothing-427/jackets-coats-2390889/N-86tZdgl?No=0&Nrpp=20&siteId=%2F12556"); 

     easy.newPage(page -> { 
      this.openAndPrintValues(page, ".filter_group.ce3_sleeve_type"); 
      this.openAndPrintValues(page, ".filter_group.colour"); 
      this.openAndPrintValues(page, ".filter_group.size"); 
      this.openAndPrintValues(page, ".filter_group.prod_fit"); 
      this.openAndPrintValues(page, ".filter_group.ce3_jacket_style"); 
      this.openAndPrintValues(page, ".filter_group.ce3_fabric"); 
      this.openAndPrintValues(page, ".filter_group.ce3_collection"); 
      this.openAndPrintValues(page, ".filter_group.ce3_clothing_brands"); 
      this.openAndPrintValues(page, ".filter_group.accessories"); 
     }); 
    } 
} 

private void openAndPrintValues(final ActionablePage page, final String selector) { 
    // open 
    page.scrollTo(selector); 
    page.click(selector); 

    page.executeIn(selector + ":not(.collapsed)", container -> { 

     // get facet heading 
     final WebElement heading = container.getRaw(".filter_group_label span.lbl"); 
     page.scrollTo(heading); 
     System.out.println("Choices under selector: " + heading.getText()); 

     // get facet lists 
     container.executeIn("ul", list -> { 
      list.wait((Predicate<WebDriver>) t -> list.getRawList("li.refinement:not(.disabled) span.lbl").size() > 0);; 
      final List<WebElement> elements = list.getRawList("li.refinement:not(.disabled) span.lbl"); 
      // scroll to end of list, selenium will not display 'unseeen' elements 
      page.scrollTo(elements.get(elements.size() - 1)); 

      // pring heading and list 
      elements.stream().map(WebElement::getText).filter(StringUtils::isNotEmpty).forEach(System.out::println); 
      System.out.println(); //extra space 
     }); 
    }); 
} 

}

そしてここでは、コードの出力です。

 
Choices under selector: Sleeve Length 
3/4 Sleeve 
Long Sleeve 
Sleeveless 

Choices under selector: Colour 
Purple 
Red 
White 

Choices under selector: Size 
10 
12 
14 
16 
XS 
S 
S/M 
M 
M/L 
L 
XL 

Choices under selector: Fit 
Regular 
Petite 
Tall 
Maternity 

Choices under selector: Jacket & Coat Style 
Faux Fur Coats 
Gilets 
Kimono 
Parkas 
Shacket 
Shearling Coats 
Sleeveless Jackets 
Smart Coats 
Smart Jackets 
Trench Coats & Macs 
Wool Coats 

Choices under selector: Fabric 
Cord 
Denim 
Embroidered 
Faux Fur 
Faux Leather 
Lace 
Leather 
Sequin 
Suede 
Velvet 

Choices under selector: Collection 
Boutique 
Festival 
Going Out 
Sportswear 
Unique 
Workwear 

Choices under selector: Clothing Brands 
Adidas Originals 
Glamorous 
Glamorous Petites 
Goldie 

Choices under selector: Accessories 
One Size 
関連する問題