对于网站“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;
}
}
答案 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