获取Java程序(Selenium)的前一个数字的总和不正确

时间:2016-02-18 19:09:39

标签: java selenium

对于网站“http://www.americangolf.co.uk/golf-clubs/fairway-woods”,我想做以下事情。

1)首先,我想从每个“品牌”部分单独获取数字。 即,CobraGolf(14)意味着我想单独服用14个。

2)然后想要添加品牌部分的所有数字。

我在第一步中成功(即)我已经成功地从字符串中裁剪了数字。但是我无法添加所有数字。

每当我跑步时,我得到所有数字的错误总和。请帮助。

 package com;

    import java.util.List;
    import java.util.concurrent.TimeUnit;

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.firefox.FirefoxDriver;


    public class Exercise2 {
        static WebDriver d=null;

        public static void main(String[] args) {
            d=new FirefoxDriver();
            d.manage().window().maximize();
            d.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
            d.get("http://www.americangolf.co.uk/golf-clubs/fairway-woods");
            String str1="//*[@id='secondary']/div[1]/div[3]/div/ul/li[";
            String str2="]/a";

            int i=1;
            int old=0, current, sum=0;
            while(isElementPresent(str1+i+str2)){

                String a1 = d.findElement(By.xpath(str1+i+str2)).getText(); 
                System.out.println(a1); 
                String a2=a1.substring(a1.indexOf("(") + 1, a1.indexOf(")")); 
                System.out.println("Substring is -->"+a2); 
                int new1=Integer.parseInt(a2); 
                System.out.println("New 1-->"+new1); 
//Seems the below 5 lines have problem.
                current=new1+old;
                sum+=current;
                System.out.println("Current Sum is -->"+sum);
                old=new1;
                new1=current;
                d.get("http://www.americangolf.co.uk/golf-clubs/fairway-woods"); 
                i++; 
                System.out.println("***********");
            }

            System.out.println(sum);
        }
            public static boolean isElementPresent(String xpathexp){
                List<WebElement> allelements=d.findElements(By.xpath(xpathexp));
                if(allelements.size()==0)
                    return false;
                else
                    return true;
                }
    }

2 个答案:

答案 0 :(得分:0)

问题在于

current = new1 + old;
old = new1;
new1 = current;

您最终会多次添加相同的值。只使用

int current = Integer.parseInt(a2);
sum += current;

例如,假设a2中的第一个数字是1,第二个数字是3

第一次迭代:

new1 --> 1
current = new1 + old; current --> 1 
sum += current;       sum --> 1
old = new1;           old --> 1
new1 = current;       new1 --> 1

第二次迭代:

new1 --> 3
current = new1 + old; current --> 4 
sum += current;       sum --> 5
old = new1;           old --> 3
new1 = current;       new1 --> 4

sum是5而不是4。

答案 1 :(得分:0)

我建议你做一些更像下面的事情。它将显着简化您的代码。

.bashrc包含brands个标记,其中包含类span。里面的文字包含您要查找的数字,通常采用表格,&#34; (14)&#34 ;.然后代码循环遍历所有这些(仅在品牌类别下),删除除数字之外的所有字符,然后将它们转换为refinement-count并将它们添加到当前int

count