当文本包含<span>时,无法从div获取文本

时间:2017-12-14 13:09:05

标签: java html selenium xpath

我正在使用Selenium和Java。我无法从span标记获取文本,每次都返回一个空字符串。 HTML代码:

&#13;
&#13;
<div class="fade-repeat-animation alert ng-isolate-scope alert-error" ng-class="type && "alert-" + type" ng-repeat="alert in alerts" type="alert.type" close="closeAlert($index)">
    <button class="close" ng-click="close()" type="button" ng-show="closeable">×</button>
    <div ng-transclude="">
        <span class="ng-scope ng-binding">This text</span>
    </div>
</div>
&#13;
&#13;
&#13;

这是Selenium代码:

String ipError = within(secs(10)).div(By.xpath("//div[@class='fade-repeat-animation alert ng-isolate-scope alert-error']/div/span")).getAttribute("innerHTML");

我尝试使用getText()getAttribute("textContent"),但始终返回空String

3 个答案:

答案 0 :(得分:0)

可能是因为angularJS Webdriver无法从UI读取文本。 尝试使用此代码,让我知道它是否有效。

driver.findElement(By.cssSelector(".fade-repeat-animation.alert.ng-isolate-scope .alert-error")).getText();

答案 1 :(得分:0)

您必须尝试使用​​getText()方法,请尝试使用此代码

String Spantext=driver.findElement(By.xpath("//span[@class='ng-scope ng-binding']")).getText();
System.out.println(Spantext);

答案 2 :(得分:0)

根据您提供的HTML打印文字 This text ,您可以使用以下代码行:

System.out.println(new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='fade-repeat-animation alert ng-isolate-scope alert-error']//div/span[@class='ng-scope ng-binding']"))).getAttribute("innerHTML"));