Невозможно сохранить новые значения таблицы после возврата из нового окна - (Выполнение очистки веб-страниц с использованием Selenium, BeautifulSoup и Python) - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть динамическая таблица с несколькими строками одновременно, она показывает только несколько, поэтому у нее есть следующая кнопка для перехода к следующему набору значений.Каждая строка в таблице является ссылкой на страницу с более подробной информацией, я пытаюсь получить данные с этой страницы, после чего я возвращаюсь в основную таблицу результатов поиска, нажимаю вторую ссылку, записываю, возвращаюсь и так далее.Проблема в том, что когда я нажимаю кнопку «Далее», чтобы перейти к следующему набору значений, нажимаю на первую ссылку в результате и возвращаюсь к набору результатов после очистки, я оказываюсь в самых первых результатах поиска (страница 1 вместо страницы 2).Может кто-нибудь подсказать, что я могу делать не так.

Использовал switch_to.window (driver.window_handle []), чтобы перейти на страницу подробной информации, и используя window_handle [0], чтобы вернуться на страницу базовых результатов.

в то время как True:

table = driver.find_element_by_xpath(
    '//*[@id="ctl00_ph"]/tbody')
row_table = table.find_element_by_tag_name('tr')
# row_table.find_element(By.TAG_NAME('td'))
count = 21
before = '//*[@id="ctl00_l'
after = '_lnkProperty"]'
all = driver.window_handles
print(all)
window_before = driver.window_handles[0]
#window_before = driver.window_handles()

for i in range(2, count + 1):
    if i < 10:
        link = before + '0' + str(i) + after
    else:
        link = before + str(i) + after
    links.append(link)
    # print(link)
    row_table.find_element_by_xpath(link).click()
    time.sleep(5)
    driver.switch_to.window(driver.window_handles[1])
    print(driver.window_handles)
    print(driver.window_handles[1])
    time.sleep(2)
    html_doc = driver.page_source.encode('utf-8')
    # print(html_doc)
    # driver.back()

    soup = BeautifulSoup(html_doc, 'html.parser')
    time.sleep(2)

'' '' '' '# print (данные) driver.close () driver.switch_to.window (window_before) # driver.switch_to.default_content () pin.append (data) break time.sleep (1)

# elm = driver.find_element_by_xpath('//*[@id="ctl00_phArticle_ctlPropertySearch_ctlSearchResults_pnlAppealSearchResults"]/div[2]/div/a[9])')
elm = driver.find_element_by_class_name('pager-link')
# ('a', class_='pager-link')
if 'inactive' in elm.get_attribute('class'):
    break
else:
    elm.click()
    print('click')
    time.sleep(1)
    print(driver.current_window_handle)

Мне все еще нужно быть в результатах, которые появились после нажатия кнопки Далее, когда я вернусь на эту страницу из другого окна.

...