Как извлечь текст 209.520 в промежутке в соответствии с HTML через Selenium? - PullRequest
0 голосов
/ 26 августа 2018

Я делаю автоматизацию с селеном, и я пытаюсь взять значение, которое находится внутри метки диапазона. Как мне это сделать? Я уже пробовал с getText (), но печатает ноль

Это строка в HTML

<span class="visible-xs" data-bind="html: PriceWithoutCurrencySymbol">209.520</span>

Мне нужно взять номер 99.520. Я уже сделал правильный xpath, который находит его, но как мне извлечь это значение?

Спасибо за вашу помощь.

xpath, если он приносит несколько объектов, но мне нужно получить это значение,

это xpath, который я использую

//div[@class='totalPrice']/span[@data-bind='html: PriceWithoutCurrencySymbol']

А это код HTML

<div class="flightPriceContainer notranslate">
                                <div class="totalPrice">
                                    <span class="hidden-xs" data-bind="html: Price">COP 209.520</span>
                                    <span class="visible-xs" data-bind="html: CurrencySymbol">COP</span>
                                    <span class="visible-xs" data-bind="html: PriceWithoutCurrencySymbol">209.520</span>
                                </div>
                            </div>

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

В соответствии с HTML, которым вы поделились, желаемый элемент является элементом React , поэтому для извлечения текста 209.520 вы должны заставить WebDriverWait для элемента быть видимым, и вы можете использовать любое из следующих решений:

  • cssSelector:

    String labelText = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.flightPriceContainer.notranslate > div.totalPrice > span.visible-xs[data-bind$='PriceWithoutCurrencySymbol']"))).getAttribute("innerHTML");
    
  • xpath

    String labelText = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='flightPriceContainer notranslate']/div[@class='totalPrice']/span[@class='visible-xs' and contains(@data-bind,'PriceWithoutCurrencySymbol')]"))).getAttribute("innerHTML");
    
0 голосов
/ 26 августа 2018

Решение Python, использующее lxml, но xpath должно быть идентичным в Java.

html = '<span class="visible-xs" data-bind="html: PriceWithoutCurrencySymbol">99.520</span>'
print(''.join(lxml.html.fromstring(html).xpath('//span//text()')))
...