Я учу селен.Я пытаюсь найти скрытый элемент, но не могу увидеть элемент даже после нажатия на него.Я уже пробовал разные ответы, чтобы получить доступ к скрытому тексту после нажатия кнопки, чтобы открыть скрытые текстовые элементы.Я пытаюсь подобрать дополнительные абзацы, которые появляются после нажатия кнопки «Подробнее» на сайте.
Используя следующий пример, я получил возможность щелкать мышью, но текст так и не появился:
Как нажать на скрытую кнопку с селеном через 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)
Я хочу получить толькосоответствующий текст.