我使用了.getAttribute(“value”);但它给出了空值 .gettext()方法也给出了null值。请建议前进的方法。Snapshot of xpath
<span class="required-filled ng-binding" ng-hide="appc.model.oRareCaratSignup.msgError">Please fill required fields</span>
元素的绝对xpath是:
html/body/div[5]/div[2]/div/div/div[2]/div[3]/span[2]
答案 0 :(得分:0)
您可以尝试类似
的内容WebElement TxtBoxContent = driver.findElement(By.xpath("html/body/div[5]/div[2]/div/div/div[2]/div[3]/span[2]"));
String Txt = TxtBoxContent.getText();
System.out.println(Txt);
答案 1 :(得分:0)
我会说,尝试一个相对的xpath。范围包含文本,因此它应具有Text。
属性我要做的第一件事是,用chrome打开页面。然后点击F12(开发工具),进入控制台选项卡。那里,典型:
$x("//span[@class='required-filled ng-binding']")
假设这是“必需填充ng-binding”类的唯一范围
找到您的范围后,展开Chrome中的节点并检查文本属性是否已填充。如果是,在你的代码中gettext()应该工作。如果不是,那可能是一个时间问题,因为涉及Angular。在这种情况下,仅出于试验/错误目的,在获取元素之前抛出thread.sleep并查看它是否有帮助。
答案 2 :(得分:0)
我想你的元素是隐藏的。因此,您必须获取innerText
而不是文本,因为getText()
将检查元素的可见性。如果它被隐藏,您将收到一个空白文本。
element.getAttribute("innerText");
答案 3 :(得分:0)
我永远无法推断出原因,但我对开发人员如何在模态中为某些复选框编码文本提出了类似的问题。
实际上,xpath / css / id /无论是什么工作(否则你会看到一个对象无法找到错误)。问题是Selenium没有正确读取其中的文本。最后,我发现这个工作:
.getAttribute("textContent").trim()
因此,无论如何都要找到它,但请使用此代替.getText()