Как получить текст вне div? - PullRequest
       16

Как получить текст вне div?

1 голос
/ 18 февраля 2020
<div class="amlocator-store-information" style="" xpath="1"> 
  <div class="amlocator-title" style="">The Better Health Store</div>
  2420 E-Stadium Ann Arbor MI 48104
  <br><br>
  (613) 975-6613
  <div style="" class="amasty_distance" id="amasty_distance_1">Distance:                            
    <span class="amasty_distance_number"></span>
  </div>
</div>

Я использую селен с python и пытаюсь получить адрес из DOM, но не могу, я использовал

store_block_list  = '//div[@class="amlocator-store-information"]'
store_block_list = '//div[@class="amlocator-title"]'

для захвата элементов, но не могу получить адрес Как вы можете видеть, адрес находится вне элемента // div. Обратите внимание, что это список элементов, и я затем использую для l oop до l oop вокруг списка элементов

1 Ответ

0 голосов
/ 18 февраля 2020

Чтобы извлечь адрес, например: 2420 E-Stadium Ann Arbor MI 48104 , поскольку это Текстовый узел , вам нужно вызвать WebDriverWait для visibility_of_element_located() используя метод execute_script(), и вы можете использовать любую из следующих стратегий локатора :

  • Использование CSS_SELECTOR:

    print(driver.execute_script('return arguments[0].childNodes[2].textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.amlocator-store-information")))).strip())
    
  • Использование XPATH:

    print(driver.execute_script('return arguments[0].childNodes[2].textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='amlocator-store-information']")))).strip())
    
  • Примечание : Вы должны добавить следующие импорта:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...