Найти динамический контент в div, а не в iframe (python, selenium) - PullRequest
0 голосов
/ 11 февраля 2019

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

Я хотел бы получить содержимое следующего элемента:

//*[@id="bt-collapse-442112-slider"]/div[1]/div/div/div[1]/table/tbody/tr[1]/td[3]/div/h3

Я заметил, что первый div имеетатрибут «data-currenttslidecount», который вначале равен «10», но добавляется 10 при каждом нажатии кнопки.

Мой исходный код выглядел так:

> for a in range(100):
>     WebDriverWait(driver, mywaits).until(EC.presence_of_element_located((By.XPATH,
> '//*[@id="bt-collapse-442112-slider"]/div[1]')))
>     print(driver.find_element_by_xpath('//*[@id="bt-collapse-442112-slider"]/div[1]/div/div/div[1]/table/tbody/tr[1]/td[3]/div/h3').text)
>     WebDriverWait(driver, mywaits).until(EC.element_to_be_clickable((By.XPATH,
> '//*[@id="bt-collapse-442112-slider"]/div[1]/button[2]')))
>     button = driver.find_element_by_xpath('//*[@id="bt-collapse-442112-slider"]/div[1]/button[2]')
>     button.click()
>     button_count += 1
>     print(button_count) driver.close()

Попытка найтиРешение, которое я обнаружил, что часто эта проблема возникает, когда контент внедряется в iframes, и что нужно переключать кадры для получения динамического контента.Однако, в моем случае, кажется, что iframe отсутствует.

Кроме того, я попытался использовать find_element_by_css_selector вместо by_xpath, потому что я думал, что могу получить доступ к div, как этот, или, возможно, даже циклически пересчитать количество слайдов.Однако `

find_element_by_css_selector(div[data-currentslidecount="10")

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

Редактировать:

Вот HTML:

<div class="bt-slider row slick-initialized slick-slider" data-allitemcount="4184" data-currentslidecount="10"><button type="button" class="slick-prev slick-arrow slick-disabled" aria-disabled="true" style="display: block;"><span class="bab-slick-arrow-text">Zurück</span></button>
  <div class="slick-list draggable">
    <div class="slick-track" style="opacity: 1; width: 2264px; left: 0px;">
      <div class="bt-slide col-xs-12 bt-standard-content slick-slide slick-current slick-active" data-slick-index="0" aria-hidden="false" style="width: 1132px;" tabindex="-1">
        <table class="table bt-table-data">
          <thead>
            <tr>
              <th>
                <p>Veröffentlichung</p>
              </th>
              <th>
                <p>Sitzung</p>
              </th>
              <th>
                <p>Beschreibung</p>
              </th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td data-th="04.02.2019">
                <p>
                  04.02.2019<br>Montag</p>
              </td>
              <td data-th="Sitzung">
                <p>19/78</p>
              </td>
              <td data-th="Beschreibung">
                <div class="bt-documents-description">
                  <h3>
                    78. Sitzung, 19. Wahlperiode, 01.02.2019</h3>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...