Python Selenium нужно новое окно

#python-3.x #selenium #undetected-chromedriver

Вопрос:

У меня возникли проблемы с сайтом, на котором я получаю список ссылок на обращения, и мне нужно щелкнуть по всем из них.

Ссылка отправляет форму, и она загружает ту же страницу с:

  1. Новые ссылки на каждый случай, и
  2. Строка с window.open() данными по делу, которые мне нужны.

В обычном веб-браузере я получаю всплывающее окно с данными по делу.

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

Есть идеи, как получить и то, и другое?

 import undetected_chromedriver.v2 as uc
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
import sys

'''
Requires chrome
pip install selenium
pip install undetected_chromedriver

'''

driver = uc.Chrome()

txtUsingTestDates = 'Using test dates'
print(txtUsingTestDates.center(20, "="))
dateStart = "08/02/2021"
dateEnd = "08/02/2021"

with driver:
    driver.get('https://publicindex.sccourts.org/abbeville/publicindex/')
    
try:
    formAcceptTerms = driver.find_element(By.XPATH, "//*[@id='form1']")
except:
    print("Didn't find form")
try:
    driver.find_element(By.XPATH, "//*[@id='ContentPlaceHolder1_ButtonAccept']").click()
    print(">>>Accepting terms")
except:
    print("Didn't find button")

### Search form
#Select court
selectorCourts = Select(driver.find_element(By.XPATH, "//*[@id='ContentPlaceHolder1_DropDownListCourtType']"))
selectorCourts.select_by_visible_text('Circuit Court')

#Select case type
selectorCaseType = Select(driver.find_element(By.XPATH, "//*[@id='ContentPlaceHolder1_DropDownListCaseTypes']"))
selectorCaseType.select_by_visible_text('Criminal-Clerk')

#Select date search for filing date
selectorDateSearchType = Select(driver.find_element(By.XPATH, "//*[@id='ContentPlaceHolder1_DropDownListDateFilter']"))
selectorDateSearchType.select_by_visible_text('Case Filed')

#Fill from and to date
textBoxDateFrom = driver.find_element(By.XPATH, "//*[@id='ContentPlaceHolder1_TextBoxDateFrom']")
textBoxDateFrom.send_keys(dateStart)

textBoxDateTo = driver.find_element(By.XPATH, "//*[@id='ContentPlaceHolder1_TextBoxDateTo']")
textBoxDateTo.send_keys(dateEnd)

get_cookies = driver.get_cookies()
print(get_cookies)

#Submit search
driver.find_element(By.XPATH, "//*[@id='ContentPlaceHolder1_ButtonSearch']").click()

#Results
tableResults = driver.find_element(By.XPATH, "//*[@id='ContentPlaceHolder1_SearchResults']")
tableBody = tableResults.find_element(By.TAG_NAME, "tbody")
tableRows = tableBody.find_elements(By.TAG_NAME, "tr") #Gets the table rows

caseLinks = []
for tableRow in tableRows:
    tableCols = tableRow.find_elements(By.TAG_NAME, "td")
    if len(tableCols) > 1:
        columnCase = tableCols[2]
        caseNumber = columnCase.text
        print('Found case number '   caseNumber)
        caseLinks.append(columnCase)
    else:
        print("--Skipping header")

for column in caseLinks:
    caseNumber = column.text
    print('Clicking '   caseNumber)
    column.find_element(By.PARTIAL_LINK_TEXT, caseNumber).click()
    #Save case data
    #Return to updated case page to find next link

driver.close()