Как получить текст из элемента div возвращает просто "." с селеном - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть элемент div, который выглядит следующим образом.

enter image description here

Я идентифицирую этот элемент со следующим xpath.

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

Selenium идентифицирует этот элемент и загружает объект WebElement.Но когда я иду, чтобы получить его текст, я просто получаю "."как показано ниже, вместо получения «Процесс покупки для оплаты».Что я здесь не так делаю?Я проверил консоль Chrome, и нет другого элемента, соответствующего этому пути.

enter image description here

Любая помощь будет высоко ценится.

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Я думаю, что ваш xpath (// * [содержит (@ class, 'ce-component-title')]) возвращает более одного элемента, и элемент, который вам нужен, не первый.Попробуйте использовать консоль вашего браузера, чтобы проверить, сколько элементов возвращает этот xpath.Я могу помочь вам, если вы дадите мне ссылку на эту страницу.

0 голосов
/ 20 ноября 2018

В соответствии с 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");
    
...