Скрытые <p>текстовые элементы не отображаются после нажатия кнопки () в Селен Python - PullRequest
0 голосов
/ 05 июля 2019

Я учу селен.Я пытаюсь найти скрытый элемент, но не могу увидеть элемент даже после нажатия на него.Я уже пробовал разные ответы, чтобы получить доступ к скрытому тексту после нажатия кнопки, чтобы открыть скрытые текстовые элементы.Я пытаюсь подобрать дополнительные абзацы, которые появляются после нажатия кнопки «Подробнее» на сайте.

Используя следующий пример, я получил возможность щелкать мышью, но текст так и не появился:

Как нажать на скрытую кнопку с селеном через Python

Я вручную проверил исходный код, чтобы увидеть элементы до и после:

Перед «Подробнее» нажмите:

<div name="fish-deets__desc" class="fish-deets__desc">
  <h2 class="fish-deets__desc-header">trip desc</h2>
    <div class="encased__wrapper" style="max-height:150px;overflow:hidden">
      <div class="encased-content">
        <div>
          <div>
            <h4 class="fish-deets__desc-head">Top 10 Fishing Trips</h4>
            <p>Fishing trip paragraph 1</p>
            <p>Fishing trip paragraph 2</p>
          </div>
        </div>
      <div class="encased__gradient">
    </div>
  </div>
</div>
<div class="fish-deets__desc-container">
  <button class="button is-outline fish-deets__desc-button" type="button">Read More</button>
</div>

Здесь вы видите, что дополнительные параграфы 3,4,5,6 отсутствуют.Существуют только пункты 1 и 2.

После «Подробнее» нажмите:

<div name="fish-deets__desc" class="fish-deets__desc">
  <h2 class="fish-deets__desc-header">trip desc</h2>
   <div class="encased__wrapper" style="overflow: visible;">
     <div class="encased-content is-expanded">
       <div>
         <div>
           <h4 class="fish-deets__desc-head">Top 10 Fishing Trips</h4>
           <p>Fishing trip paragraph 1</p>
           <p>Fishing trip paragraph 2</p>
           <p>Fishing trip paragraph 3</p>
           <p>Fishing trip paragraph 4</p>
           <p>Fishing trip paragraph 5</p>
           <p>Fishing trip paragraph 6</p>
           <div class="fish-deets__desc-key-features">
             <div class="fish-deets__key-features">
              <div class="fish-deets__key-features--item fish-deets__key-features--trip-type">
                <div class="fish-deets__key-features--key">trip type</div>
                <div class="fish-deets__key-features--value">TopSpots</div>
              </div>
             <div class="fish-deets__key-features--item fish-deets__key-features--land-area">
               <div class="fish-deets__key-features--key">Tools</div>
               <div class="fish-deets__key-features--value">
                 <span>Fish food</span>
               </div>
              </div>
            </div>
           </div>
         </div>
       </div>
     </div>
   </div>
   <div class="fish-deets__desc-container">
     <button class="button is-outline fish-deets__desc-button" type="button">Read Less</button>
  </div>
</div>

Вы можете видеть, что после ручного нажатия «Подробнее» появляются дополнительныеабзацы, что кнопка меняется на «Читать меньше» Я не уверен, правильно ли я воссоздаю это с помощью кода.

Вот мой код:

Я пытался это нажать:

driver.find_element_by_class_name('list-deet__desc-b').click()

Я использовал следующее, чтобы понять, еслищелчок сработал, и элементы были видны, но проблема в том, что имя класса, на которое я смотрел, было идентично другим именам классов, поэтому я получил несколько непонятных результатов.

elements2 = driver.find_elements_by_xpath("//div[@class='encased__wrapper']")

for element2 in elements2:
    print(element2.get_attribute("class"))
    print(element2.get_attribute("style"))
    print(element2.is_displayed())
    print("")

Результаты:

encased__wrapper max-height: 0px;переполнение: скрытое;False

encased__wrapper max-height: 0px;переполнение: скрытое;False

encased__wrapper max-height: 0px;переполнение: скрытое;False

encased__wrapper max-height: 0px;переполнение: скрытое;False

encased__wrapper max-height: 0px;переполнение: скрытое;False

encased__wrapper max-height: 0px;переполнение: скрытое;False

encased__wrapper max-height: 150px;переполнение: скрытое;True

encased__wrapper max-height: 0px;переполнение: скрытое;False

encased__wrapper переполнение: видимое;True

encased__wrapper переполнение: видимое;True

encased__wrapper max-height: 0px;переполнение: скрытое;Верно

Результаты сбивают с толку, поскольку существует много классов с одинаковыми именами, и я, вероятно, неправильно ориентируюсь в навигации.И я, кажется, получаю одинаковый результат до и после клика, так что, думаю, я тоже нажимаю не ту вещь.

Затем для извлечения текста из невидимого, который я пробовал:

aab_elem  = driver.find_elements_by_class_name("encased_content")
for po in aab_elem:
    print(po.text)

Результат не дает скрытого текста.При этом будет напечатан только первый абзац, который виден до нажатия кнопки «Подробнее».

Скрытый текст виден только при извлечении всего источника с помощью:

ps = driver.page_source
print(ps)

Я хочу получить толькосоответствующий текст.

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