Selenium druckt die Werte nicht, wenn es denkt, dass diese Werte im Browser nicht sichtbar sind. Damit Sie alle Facetten und ihre Werte drucken können, möchten Sie möglicherweise vor dem Drucken zu jedem Element blättern.
Ich war in der Lage zu tun, was Sie beschreiben mit easytest Framework (https://github.com/codezombies/easytest) und mit dem Code unten.
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
});
});
}
}
Und hier ist der Ausgang für den Code.
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
Der Code, den Sie vorgeschlagen haben, gibt mir 9 Nullwerte und nicht die Ausgabe, nach der ich suche. –