J'ai une page de résultats de recherche qui contient de nombreux articles produits en tant que résultat de recherche. Je peux obtenir la liste des produits. Mais il ya des détails sur le produit comme le prix, la réduction, le prix d'expédition qui sont à l'intérieur de ces éléments webelements en tant qu'éléments enfants. Comment puis-je utiliser un modèle d'objet de page objet pour obtenir automatiquement les valeurs de ces éléments enfants à l'aide de l'annotation @FindBy.Comment utiliser l'infrastructure d'objet d'une page pour les éléments d'un composant Webelement
Pour le moment je ne sais pas comment je les obtiens explicitement en fournissant explicitement le contexte du parent WebElement dans la fonction findElement (By) plutôt que le mécanisme automatique de POF. La question est comment faire le contexte en tant que WebElement plutôt qu'un objet de pilote pour une classe PageObject. Je n'ai pas été en mesure de trouver un article Web compréhensible expliquant comment le faire. Quelqu'un pourrait-il expliquer une façon simple de le faire avec un peu d'espoir avec un exemple ... Je serais vraiment reconnaissant. Voici le code pour expliquer la classe de test et la classe pour représenter le produit.
public class TestProducts {
.....
//I can get the list of products from a
List<WebElement> we_prod_box_list = driver.findElements(By.xpath("//div[@id='content']/descendant::div[starts-with(@class,'product_box_container')]"));
.....
}
public class ProductItem {
private WebDriver driver = null;
private Actions action = null;
private WebElement we_prod_box = null;
public String we_prod_box_title = "";
public WebElement we_pt = null;
public String slideImgTitle = "";
public String oldPrice = "";
public String oldPriceTitle = "";
public String subPrice = "";
public WebElement we_purch_disc = null;
private WebDriverWait wait = null;
public String shippingText = "";
public String shippingCost = "";
public String discPrice = "";
.....
we_pt = we_prod_box.findElement(By.xpath(".//div[contains(@class, 'subcategor_price_tag')]"));
slideImgTitle = we_pt.findElement(By.xpath(".//div[contains(@class, 'subcategor_slideimgtitle')]")).getText();
oldPrice = we_prod_box.findElement(By.xpath(".//div[contains(@class, 'oldprice')]")).getText();
oldPriceTitle = we_prod_box.findElement(By.xpath(".//div[contains(@class, 'oldprice')]")).getAttribute("title");
subPrice = we_prod_box.findElement(By.xpath(".//span[contains(@class, 'sub-price')]")).getText();
......
}
Merci pour votre suggestion. Le problème auquel je faisais face, était que je ne pouvais pas identifier de façon unique un produit de résultat de recherche produit à la volée. Alors, comment puis-je identifier de façon unique un élément Web enfant des éléments de produit des résultats de recherche? Donc, je cherchais autre chose qui pourrait définir automatiquement les valeurs des éléments enfants en utilisant également l'annotation POF @FindBy. J'ai trouvé la réponse dans http://stackoverflow.com/questions/24251739/selenium-webdriver-page-factory-initialization-using-paths-relative-to-other-el?rq=1 – win