在selenium中阅读Web元素列表

时间:2018-03-09 08:49:50

标签: java list selenium

我是硒的新手,我跟随网站: http://live.guru99.com/index.php/mobile.html

使用pagefactory我想在一个列表中获得所有项目的实际价格。

@FindBy (css=".price") List<WebElement> prices;
public ArrayList<String> getPrices(){
    ArrayList<String> pricesList = new ArrayList<>();
    for (WebElement we:prices){
        pricesList.add(we.getText());                   
    }
        return pricesList;      
}

上面的代码可以给我4个价格,2个正常+ 1个旧和1个叫“特价” 如何更改代码只能获得2个正常价格和1个特价?我不需要旧的价格值。

顺便说一下上面的代码是否适合使用pagefactory从网站读取类似的值?

当我得到这3个价格时,我想将所有价值与商品网站上的价格进行比较,我想我知道该怎么做,但问题在于我的Web元素列表中的4个而不是3个值

1 个答案:

答案 0 :(得分:0)

尝试使用此css选择器

@FindBy(css=".price-box .regular-price,.special-price")

更新了更严格的解决方案

@FindBy (css=".price-box") List<WebElement> prices;
public ArrayList<String> getPrices(){
    ArrayList<String> pricesList = new ArrayList<>();
    for (WebElement we : prices){
        // Check if there is an old-price 
        if (we.findElements(By.css('.old-price')).size() != 0) {
            // Assuming you will take special price if there's an old-price
            priceList.add(we.findElement(By.css('.special-price')).getText());
        } else {
            pricesList.add(we.getText());
        }
    }
    return pricesList;
}