我要从中提取数据的betIn网站是betIn。我已导航至该部分,其中包括当日当前将参加比赛的所有球队的列表,我正尝试提取有关团队,但我目前只能获得13个团队,而不是所有团队。起初,我认为将值存储在Array中是问题,因此我选择移至ArrayList,但仍然遇到相同的问题,下面是我的代码:
public class test {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "/Users/user/Desktop/chromedriver");
WebDriver driver = new ChromeDriver();driver.navigate().to("https://sports.betin.co.ke/mobile#/dailyBundle/soccer/1-1000");
List<WebElement> rows = driver.findElements(By.cssSelector(".match-content.table-a.soccer"));
java.util.Iterator<WebElement> row_list = rows.iterator();
ArrayList<String> teams = new ArrayList<>();
ArrayList<String> bets = new ArrayList<>();
while(row_list.hasNext()){
WebElement rowItem = row_list.next();
String unnecessary = rowItem.findElement(By.cssSelector(".match-content__row--info")).getText();
String Content = rowItem.findElement(By.cssSelector(".match-content__info")).getText();
String relevantContent = Content.replace(unnecessary,"");
String bet = rowItem.findElement(By.cssSelector(".bets")).getText();
teams.add(relevantContent);
bets.add(bet);
}
System.out.println("These are the teams \n"+ teams);
System.out.println("The size of teams is "+ teams.size());
System.out.println("These are the odds \n"+ bets);
driver.close();
}
}
答案 0 :(得分:1)
您是否注意到rows.size()
始终显示为零。
这是因为页面未完全加载,但是您的代码正在执行。
如果我通过稍等片刻运行您的代码,则效果很好。我能够得到所有队伍。
Thread.sleep(10000) // wait for 10 seconds
List<WebElement> rows = testDriver.findElements(By.cssSelector(".match-content.table-a.soccer"));
在代码之间使用sleep
是不明智的。因此,要确保您的页面已完全加载,请检查Selenium - How to wait until page is completely loaded