从 webTable 打印特定列值
Printing specific column value from a webTable
我正在尝试根据参数打印 table 中的所有列值。如果参数匹配,则应打印所有列值。这在我下面的代码中没有发生。
public class DynamicTableHandling extends DriverFactory {
static String company = "ABB India Ltd.";
public static void main(String[] args) {
init_driver("chrome");
driver.get("https://money.rediff.com/sectors/bse/power");
extractTableValues(company);
}
public static void extractTableValues(String company) {
//print all the column values from the table when the company name provided has matched//
List<WebElement> tableRow = driver.findElements(By.xpath("//table[@class='dataTable']/tbody/tr"));
for (int row = 0; row < tableRow.size(); row++) {
WebElement colData = tableRow.get(row);
List<WebElement> tableCol = colData.findElements(By.tagName("td"));
for (int col = 0; col < tableCol.size(); col++) {
String result = tableCol.get(col).getText();
if (company.equals(result.trim())) {
System.out.print(result + " | ");
break;
}
}
}
}
}
产出 -- ABB 印度有限公司 |
您当前使用的方法 extractTableValues
的复杂度为 O(n^2)
。您可以通过制作动态 xpath 来显着优化以获得 O(n)
。
您的有效代码:
public static void extractTableValues(String company) {
List<WebElement> tds = driver.findElements(By.xpath("//a[contains(.,'"+company+"')]//ancestor::tr//td"));
for (WebElement td : tds) {
System.out.println(td.getAttribute("innerText"));
}
}
输出:
ABB India Ltd.
A
2090.10
2084.35
+5.75
+0.28
或使用Java 1.8:
public static void extractTableValues(String company) {
List<WebElement> tds = driver.findElements(By.xpath("//a[contains(.,'"+company+"')]//ancestor::tr//td"));
tds.stream().forEach(td -> {System.out.println(td.getText());});
}
我正在尝试根据参数打印 table 中的所有列值。如果参数匹配,则应打印所有列值。这在我下面的代码中没有发生。
public class DynamicTableHandling extends DriverFactory {
static String company = "ABB India Ltd.";
public static void main(String[] args) {
init_driver("chrome");
driver.get("https://money.rediff.com/sectors/bse/power");
extractTableValues(company);
}
public static void extractTableValues(String company) {
//print all the column values from the table when the company name provided has matched//
List<WebElement> tableRow = driver.findElements(By.xpath("//table[@class='dataTable']/tbody/tr"));
for (int row = 0; row < tableRow.size(); row++) {
WebElement colData = tableRow.get(row);
List<WebElement> tableCol = colData.findElements(By.tagName("td"));
for (int col = 0; col < tableCol.size(); col++) {
String result = tableCol.get(col).getText();
if (company.equals(result.trim())) {
System.out.print(result + " | ");
break;
}
}
}
}
}
产出 -- ABB 印度有限公司 |
您当前使用的方法 extractTableValues
的复杂度为 O(n^2)
。您可以通过制作动态 xpath 来显着优化以获得 O(n)
。
您的有效代码:
public static void extractTableValues(String company) {
List<WebElement> tds = driver.findElements(By.xpath("//a[contains(.,'"+company+"')]//ancestor::tr//td"));
for (WebElement td : tds) {
System.out.println(td.getAttribute("innerText"));
}
}
输出:
ABB India Ltd.
A
2090.10
2084.35
+5.75
+0.28
或使用Java 1.8:
public static void extractTableValues(String company) {
List<WebElement> tds = driver.findElements(By.xpath("//a[contains(.,'"+company+"')]//ancestor::tr//td"));
tds.stream().forEach(td -> {System.out.println(td.getText());});
}