2016-07-26 63 views
2

我想從左側訪問下面的URL的所有數據列表,但無法找到類和id的正確組合。請幫忙。以下是我的代碼。Selenium代碼沒有從網頁中提取faccet數據

網址: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個空值而不是我正在尋找的輸出。 –

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

//使用這個文本的位置()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