[英]How to get product reviews and then click <a> element of product with most reviews (Selenium, Java)
<section id="135156028" data-scrolled="false" class="AdItem_adOuterHolder__Z29Nf">
<article class="AdItem_adHolder__GL0yo">
<a class="Link_link__J4Qd8 Link_inherit___qXEP" target="_self" id="" rel="" role="button"
tabindex="-1" href=".." style="align-items: flex-start;">
<div class="AdItem_imageHolder__DYGd_" style="max-width: 128px; min-width: 128px; height:
120px;">
<img src="...">
</div>
</a>
<div class="AdItem_descriptionHolder__xnkD4">
<div class="AdItem_adInfoHolder___36KR"></div>
<div class="AdItem_price__k0rQn">650 din</div>
<div>
<div class="AdItem_viewAndFavorite__pjskf">
<div class="AdItem_favoriteHolder__bKBRE">
<svg width="16" height="16" viewBox="0 0 16 16" fill="none"
xmlns="http://www.w3.org/2000/svg" class="asIcon_greyStroke__NU1Xe
asIcon_svg__Zm34q">
</svg>
<span class="AdItem_count__iNDqG">**144**</span>
</div>
<div class="AdItem_favoriteHolder__bKBRE">
<svg width="16" height="16" viewBox="0 0 16 16" fill="none"
xmlns="http://www.w3.org/2000/svg" class="asIcon_greyStroke__NU1Xe
asIcon_svg__Zm34q">
</svg>
<span class="AdItem_count__iNDqG">13</span>
</div>
</div>
<div class="AdItem_postedStatus__C6vfK">...</div>
</div>
</div>
</article>
</section>
這是代碼,我刪除了一些不必要的東西,但如果我刪除了代碼的一些重要部分,鏈接在這里:[https://novi.kupujemprodajem.com/mama-i-beba/oprema-za-hranjenje- i-dojenje/grupa/18/2473/1]。 我拿了隨機產品來分享代碼,而不是瀏覽量最多的產品,但我想做的是從這里獲取瀏覽量:"xpath = "//div[@class='AdItem_viewAndFavorite__pjskf']//div[1] “,檢查哪個產品的數量最多,然后我想點擊那個產品的元素。我是新手,我不知道如何連接這些,我在互聯網上沒有找到任何解決方案。網。
我試過這樣的事情:
@FindBy(xpath = "//div[@class='AdItem_name__BppRQ']")
List<WebElement> productsList;
@FindBy(xpath = "//div[@class='AdItem_viewAndFavorite__pjskf']//div[1]")
List<WebElement> productViewsList;
public SingleProductPage chooseHighestViewsProduct(){
String productName;
String productViews;
int numberOfViews;
HashMap<Integer,String> mapFinalProducts = new HashMap<Integer, String>();
for (int i=0;i<productsList.size();i++){
productName = productsList.get(i).getText();
productViews = productViewsList.get(i).getText();
numberOfViews = Integer.parseInt(productViews);
mapFinalProducts.put(numberOfViews, productName);
}
Set<Integer> allKeys = mapFinalProducts.keySet();
ArrayList<Integer> listOfProductValues = new ArrayList<Integer>(allKeys);
Collections.sort(listOfProductValues);
int highestViews = listOfProductValues.get(listOfProductValues.size()-1);
}
通過這種方式我得到了瀏覽量最多的產品,但是因為那個 span 是不可點擊的,所以我不知道如何點擊它的鏈接。
一旦獲得最多的瀏覽量產品,然后找到標簽的前a
元素,然后單擊。
productViewsList.get(highestViews).findElement(By.xpath("./preceding::a[1]")).click()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.