Как извлечь текстовое содержимое из нескольких элементов диапазона с помощью Selenium и Python - PullRequest
0 голосов
/ 14 июля 2020

Как выбрать текстовое содержимое из нескольких элементов DIV с помощью селена?

На веб-сайте я собираюсь собирать информацию, содержащую div и span с тем же классом.

Как я могу это собрать информацию отдельно?

Мне нужно содержимое внутри блока div> span каждого блока

driver.find_element_by_xpath(".//div[@class='panel-body'][1]/span[1]").text
driver.find_element_by_xpath(".//div[@class='panel-body'][1]/span[2]").text
driver.find_element_by_xpath(".//div[@class='panel-body'][1]/span[3]").text

driver.find_element_by_xpath(".//div[@class='panel-body'][2]/span[1]").text
driver.find_element_by_xpath(".//div[@class='panel-body'][2]/span[2]").text

html

        <div class="panel-heading">
            <h3 class="panel-title">Identificação</h3>
        </div>


        <div class="panel-body">
            <span class="spanValorVerde">TEXT</span><br>
            <span style="font-size:small;color:gray">TEXT</span><br>
            <br>
            <span class="spanValorVerde">TEXT</span>
        </div>


    </div>

    <div class="panel panel-success">

    
        <div class="panel-heading">
            <h3 class="panel-title">Situação Atual</h3>
        </div>


        <div class="panel-body">
            <span class="spanValorVerde">TEXT</span> <br>
            <span class="spanValorVerde">TEXT</span>
        </div>


    </div>

Ответы [ 2 ]

0 голосов
/ 15 июля 2020

Чтобы извлечь тексты, например, TEXT , из каждого <span> с использованием Selenium и вы должны вызвать WebDriverWait для visibility_of_all_elements_located(), и вы можете использовать любую из следующих стратегий локатора :

  • Использование CSS_SELECTOR и get_attribute("innerHTML"):

    print([my_elem.get_attribute("innerHTML") for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.panel.panel-success div.panel-body span.spanValorVerde")))])
    
  • Использование XPATH и текст атрибут:

    print([my_elem.text for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='panel panel-success']//div[@class='panel-body']//span[@class='spanValorVerde']")))])
    
  • Примечание : необходимо добавить следующее импорт:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

Outro

Ссылка на полезную документацию:

0 голосов
/ 14 июля 2020

Я ожидаю, что «выбрать текст» означает «получить текст».

сначала для l oop:

count = driver.find_elements_by_xpath(".//div[@class='panel-body'][i]")

второй для l oop с count итерацией :

driver.find_element_by_xpath(".//div[@class='panel-body'][i]/span[j]").text

Если вы выполняете поиск с помощью findElements с помощью ".//div[@class='panel-body'][i]", вы получите общее количество имеющихся элементов, затем добавьте еще l oop для .//div[@class='panel-body'][i]/span[j] и затем получите текст. Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...