如何从div元素获取文本仅返回“。”。与硒

时间:2018-11-20 04:36:07

标签: java selenium xpath css-selectors webdriverwait

我有一个div元素,如下所示。

enter image description here

我用以下xpath标识了这个元素。

//*[contains(@class,'ce-component-title')]

Selenium标识此元素并加载WebElement对象。但是当我去获取它的文本时,我只是得到一个“。”如下所示,而不是获取“购买付款过程”。我在这里做错了什么?我检查了chrome控制台,没有其他元素与此xpath匹配。

enter image description here

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

根据您共享的HTML,该元素是Angular元素,因此您必须诱使 WebDriverWait 以便使所需的元素可见,并且使用以下任一解决方案:

  • cssSelector

    String myString = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div[ng-if*='getTitle']>div.ce-component-title"))).getAttribute("innerHTML");
    
  • xpath

    String myString = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[contains(@ng-if,'getTitle')]/div[@class='ce-component-title flex text-overflow ng-binding']"))).getAttribute("innerHTML");
    

答案 1 :(得分:0)

我认为您的xpath(// * [contains(@ class,'ce-component-title')])返回多个元素,而您所需的元素不是第一个。 尝试使用浏览器的控制台,以验证此xpath返回多少元素。 如果您向我提供此页面的网址,我可以为您提供帮助。