我的代码是使用webelement列表将网页中的错误消息列表打印到excel,但它只打印一条最后一条消息到excel。请帮忙。我正在使用下面的代码。
public void printoutput(int sheetnum, int row, int col, String str) throws IOException
{
wb.getSheetAt(sheetnum).getRow(row).createCell(col).setCellValue(str);
FileOutputStream fos=new FileOutputStream("/Users/paulami/Desktop/AP_Portal/TestData.xlsx");//to write in excel
wb.write(fos);
//wb.close();
}
System.setProperty("webdriver.chrome.driver", "chromedriver");
WebDriver driver = new ChromeDriver(options);
driver.get("https://TestLink");
driver.manage().window().maximize();
Thread.sleep(5000);
{
errorMessage = element.getText();
System.out.println(errorMessage);
excel.printoutput(1, row, 22, errorMessage);
}
List<WebElement> allelements=driver.findElements(By.xpath("//div[@class='ui-meui-cor']/ul/li"));
System.out.println(allelements);
String errorMessage="";
for(WebElement element : allelements)
{
errorMessage = element.getText();
System.out.println(errorMessage);
excel.printoutput(1, row, 22, errorMessage);
}
答案 0 :(得分:2)
由于以下行,它似乎只写了最后一个值:
excel.printoutput(1, row, 22, errorMessage);
我不知道printoutput
方法的参数是什么,但可能其中一个是cell
个数字。上面的一行继续将不同的消息写入同一个单元格,因此,之前的值总是被覆盖,仅在最后一个值中打印。更新的解决方案应如下所示(伪代码):
for(WebElement element : allelements){
excel.printoutput(1, row++, 22, element.getText());
}
或者,如果您要附加内容,首先需要检索内容并将element.getText()
附加到其中。
<强>更新强>
要将所有消息写入一个单元格,首先需要创建一个String
,其中包含逗号分隔值,并将其写入excel
,例如:
String content = allelements.stream().map(e -> e.getText()).collect(Collectors.joining(", "));
excel.printoutput(1, row, 22, content);
这会将所有消息写入单行。然后,您可以使用不同的行号重复相同的方法来编写新的消息集。
答案 1 :(得分:0)
我仍然在java开始,但只是想提出一些建议,只需检查并查看:检查列表中元素的数量是否大于1 如果它小于&#34;一个&#34;这意味着你的功能&#34; findelements()&#34;有问题---- allelements.size();