我已经创建了一种获取交易ID的方法,但是找不到该元素。我无法在Web表中检索ID,因为它显示了无法找到元素的错误。此外,它将打开另一个空白窗口。
这是获取ID的方法
public String getTransactionID(String ID) throws IOException {
File src = new File("C:\\selenium\\ExcelData\\TestData.xlsx");
FileInputStream fis = new FileInputStream(src);
wb = new XSSFWorkbook(fis);
XSSFSheet sh1 = wb.getSheetAt(0);
String getValue = null;
String TransactionID = null;
for (int i = 0; i<=1000; i++) {
if(sh1.getRow(i).getCell(0) != null)
{
getValue = sh1.getRow(i).getCell(0).getStringCellValue();
}
if(getValue != null) {
if(getValue.contains(ID)) {
System.setProperty("webdriver.gecko.driver","C:\\selenium\\geckodriver-v0.23.0-win64\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
TransactionID = driver.findElement(By.xpath("//table/tbody/tr[2]/td/table/tbody/tr/td/table/tbody/tr[1]/td/table/tbody/tr[1]/td")).getText();
FileOutputStream fout = new FileOutputStream(src);
sh1.getRow(i).createCell(1).setCellValue(TransactionID);
wb.write(fout);
fout.close();
break;
}
}
}
return TransactionID;
这是调用方法的行
GetExcel transID = new GetExcel();
transID.getTransactionID("Transaction ID");
答案 0 :(得分:0)
问题
问题出在以下代码片段中:
WebDriver driver = new FirefoxDriver();
这将打开一个新的Firefox浏览器。这就是为什么您看到“空白窗口”打开的原因。
TransactionID = driver.findElement(By.xpath("//table/tbody/tr[2]/td/table/tbody/tr/td/table/tbody/tr[1]/td/table/tbody/tr[1]/td")).getText();
此后,您立即尝试在网站上搜索元素。您可以想象,尝试在空白页上查找元素显然会引发错误。
您需要先导航到该网站:
driver.get(your_url_here);
边注
您的xpath不太理想,因为它过于硬编码-如果在网站中创建了新元素,则您的xpath可能会损坏。相反,您应该使用一种更动态的方法,该方法利用元素的DOM属性,例如id
:
//table[@id='xxx']//td
文档:https://www.w3schools.com/xml/xml_xpath.asp
此外,您的变量名TransactionID
应该用小写大写,即transactionID
。