Java Selenium调用getText获取input值为null,如何写Xpath提取发票号
问题根因
Selenium的getText()方法仅用于获取元素闭合标签之间的可见文本,而<input>是单标签,它的内容存储在value属性中,因此用getText()获取input内容自然会返回空值。另外你原代码里的By.Xpath写法不符合Java Selenium API规范,正确写法是By.xpath(),x为小写,否则会触发编译错误。
解决代码
根据你提供的HTML结构,分两种场景给出对应实现:
场景1:发票号存储在id为eor的输入框中
直接获取input的value属性即可:
// 定位input元素 WebElement eorInput = driver.findElement(By.xpath("//input[@id='eor']")); // 提取输入框内的发票号 String invoiceNum = eorInput.getAttribute("value");
哪怕input处于禁用状态也不影响getAttribute方法的取值,无需额外处理。
场景2:发票号为input标签外的独立文本Invoice number : 350971854
先定位到包裹input和目标文本的父级p标签,再提取文本后裁剪出发票号:
// 定位包含input元素的父级p标签 WebElement parentP = driver.findElement(By.xpath("//p[./input[@id='eor']]")); // 获取p标签下所有可见文本 String allContent = parentP.getText(); // 裁剪提取发票号 String invoiceNum = allContent.split("Invoice number : ")[1].trim();
后续写入Excel说明
拿到invoiceNum字符串变量后,你可以使用Apache POI、EasyExcel等Java Excel操作工具,将该字符串写入指定Excel单元格即可。
内容的提问来源于stack exchange,提问作者Subhradip Sinha
相关产品推荐
相关产品推荐

