getText无法正常工作

时间:2017-11-20 16:53:29

标签: java selenium selenium-webdriver

我正在使用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是正确的。 任何帮助都非常感谢。

2 个答案:

答案 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");