Вам нужно изменить свой локатор, и если вы хотите извлечь все элементы, вам нужно использовать метод driver.findElements()
.
Попробуйте локатор XPath, приведенный ниже, который определит количество строк в этой таблице:
String xPath = "//table[@id='tblInterday']/tbody//tr";
, и вы можете получить размер строк следующим образом:
int rows = driver.findElements(By.xpath(xPath)).size();
, и вы можете перебирать целые строки, используя циклы, например for
loop, как показано ниже:
for(int i=1;i<rows;i++) {
}
Приведенный ниже XPath будет идентифицировать количество столбцов в каждой строке на основе порядкового номера строки:
String xPath = "//table[@id='tblInterday']/tbody//tr[row index number]/td";
Поскольку существует много строк, вы можете передать индекс строки вышеупомянутому XPath, какниже:
for(int i=1;i<rows;i++) {
driver.findElements(By.xpath(xPath+"["+i+"]/td"));
}
Поскольку мы используем метод driver.findElements()
, описанный выше, он будет содержать все элементы столбцов, мы можем выполнить цикл и распечатать каждый из них, как показано ниже:
for(WebElement element : driver.findElements(By.xpath(xPath+"["+i+"]/td"))) {
System.out.print(element.getText()+"\t");
}
Замените
driver.findElements(By.xpath(xPath+"["+i+"]/td")).forEach(e -> System.out.print(e.getText()+"\t"));
на
for(WebElement element : driver.findElements(By.xpath(xPath+"["+i+"]/td"))) {
System.out.print(element.getText()+"\t");
}
Если вы хотите печатать нормально.
Ниже приведен весь код с использованием Java 8:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class SeleniumTest {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\\NotBackedUp\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://cotacoes.economia.uol.com.br/acao/cotacoes-historicas.html?codigo=PETR4.SA&size=200&page=1&period=");
String xPath = "//table[@id='tblInterday']/tbody//tr";
int rows = driver.findElements(By.xpath(xPath)).size();
for(int i=1;i<rows;i++) {
driver.findElements(By.xpath(xPath+"["+i+"]/td")).forEach(e -> System.out.print(e.getText()+"\t"));
System.out.println();
}
}
}
Надеюсь, это поможет ...