下面的代码是 Selenium Webdriver 中的 Java 代码。该代码从 Excel 工作表中读取一长串列表。它将每个 Excel 单元格中的值存储在变量 LastName
和 FirstName
中。导航到 SQL Server Management Studio 数据库后,我需要在查询中使用变量。这就是我遇到问题的地方。当我使用命令“screen.type(LastName);”时,变量 LastName
抛出“无法解析为变量”错误。
如何在 Sikuli 中使用 Java 中定义的变量 LastName
和 FirstName
。
File src = new File ("C:\\EmployeeList.xlsx");
FileInputStream fis = new FileInputStream(src);
XSSFWorkbook wb = new XSSFWorkbook(fis);
XSSFSheet sheet1 = wb.getSheetAt(0);
int rowcount=sheet1.getLastRowNum();
System.out.println("Total Row is :" + rowcount);
for (int i=0; i<rowcount;i++) {
String LastName=sheet1.getRow(i).getCell(0).getStringCellValue();
String FirstName=sheet1.getRow(i).getCell(1).getStringCellValue();
System.out.println("Data Employee List is " +i+ " "+"is "+ LastName+ ", "+FirstName+");
}
wb.close();
//Navigated into SQL Server management studio database
screen.type(LastName);
最佳答案
LastName
是在 for
循环局部作用域中声明的,因此它不存在于 for
之外。需要对外声明
String lastName, firstName;
for (int i = 0 ; i < rowcount ; i++) {
lastName = sheet1.getRow(i).getCell(0).getStringCellValue();
firstName = sheet1.getRow(i).getCell(1).getStringCellValue();
System.out.println("Data Employee List is " + i + " " + "is " + lastName + ", " + firstName);
}
screen.type(lastName);
我不确定这是否是故意的,但 screen.type(lastName);
将仅使用 lastName
的 last 值。如果您想使用所有这些,请将其插入循环中。在这种情况下,您可以将 lastName
声明保留在 for
for (int i = 0 ; i < rowcount ; i++) {
String lastName = sheet1.getRow(i).getCell(0).getStringCellValue();
String firstName = sheet1.getRow(i).getCell(1).getStringCellValue();
System.out.println("Data Employee List is " + i + " " + "is " + lastName + ", " + firstName);
screen.type(lastName);
}
顺便说一下,Java 中的变量应该以小写字母开头。
关于java - 在 Selenium-Webdriver 中将 Java 变量与 Sikuli 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36247546/