我正在使用Selenium和JAVA为我的应用程序创建自动化。 我有两个问题。我试图从以下div获取文本但没有得到正确的文本。 我有一个文本为“确定”的按钮。通过getText获取文本并执行assertEquals看起来非常简单,但我的测试失败了。
<div id="OK">
<input type="button" onclick="javascript:window.close();" style="width:80px"
value="OK">
</div>
直到现在我已经尝试过跟随sols但没有任何作用。
Text = driver.findElement(By.id("OK")).getText();
和
Text = driver.findElement(By.xpath("//div[@id = 'OK']//input[@value = 'OK']")).getText();
我和assertEquals比较。以下是我得到的断言错误:
java.lang.AssertionError: The following asserts failed:
expected [OK] but found []
我想要得到的第二个文字来自以下内容:
<div id="PartNo">
Part #
<span id="lblPartNo"> 11-222-33</span>
<br>
<a id="btn_version"
href="javascript:__doPostBack('btn_version','')">VersionTestDetails</a>
</div>
我想只获得“Part#”,但我的代码正在获取div的完整文本,即
"Part # 11-222-33
VersionTextDetails".
我故意在“33”之后添加了一个输入,因为我是如何获取数据的。 以下我尝试但是没有任何工作可以获得“Part#”
Text = driver.findElement(By.id("PartNo")).getText();
并且
Text = driver.findElement(By.xpath("//div[@id = 'content']//div[contains(text(), 'Part #')]")).getText();
获取文本后我正在执行assertEquals但得到以下错误:
java.lang.AssertionError: The following asserts failed:
expected [Part # 11-222-33 VersionTestDetails] but found [Part # 11-222-33 VersionTestDetails]
我已在上述两种情况中确认我使用的id或xpath是正确的。 任何帮助都非常感谢。
答案 0 :(得分:0)
要从按钮获取文本,请使用getAttribute而不是getText。
String value= driver.findElement(By.cssSelector("#OK input")).getAttribute("value");
在第二种情况下,它是实际行为。你会得到这些元素的全部内在文本。从该div获取整个文本后,您可以在断言之前修改它。
String text = driver.findElement(By.id("PartNo")).getText();
assertEquals(true, text.contains("Part #"));
答案 1 :(得分:0)
它不适用于getText(),因为它在DOM中被定义为值
String value= driver.findElement(By.cssSelector("#OK input")).getAttribute("value");