Imprima un fragmento de texto utilizando Selenium con varias ventanas abiertas.
Con la ayuda de la comunidad he logrado desarrollar un fragmento de código que imprime la línea de una página web. Sin embargo, ahora quiero que el código imprima el fragmento de texto para varias páginas web que coinciden con un selector xpath específico. ¿Cómo se puede hacer esto?
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
import time
driver = webdriver.Chrome("C:\Program Files (x86)\chromedriver.exe")
driver.get('https://www.flashscore.com/')
wait = WebDriverWait(driver, 20)
driver.maximize_window() # Para maximizar la ventana
time.sleep(2)
driver.find_element_by_id('onetrust-reject-all-handler').click()
matchpages = driver.find_elements_by_xpath("//*[@class='preview-ico icon--preview']//*[name()='use']")
for matchpage in matchpages:
matchpage.click()
new_window = driver.window_handles[1]
original_window = driver.window_handles[0]
driver.switch_to.window(driver.window_handles[1])
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.previewShowMore.showMore"))).click()
main = driver.find_element(By.XPATH,"//div[@class='previewLine' and ./b[text()='Hot stat:']]").text
main = main.replace('Hot stat:','')
print(main)
driver.close()
driver.switch_to.window(original_window)
Creo que la siguiente línea selecciona la primera página ‘preview’:
new_window = driver.window_handles[1]
Sin embargo, esto luego debe ajustarse para todas las páginas ‘preview’ en flashscore.com.
Además, las siguientes líneas también deberían incorporarse en las ventanas abiertas, ya que me gustaría imprimir estas líneas para obtener una visión rápida de las estadísticas destacadas de ese día.
main = driver.find_element(By.XPATH,"//div[@class='previewLine' and ./b[text()='Hot stat:']]").text
main = main.replace('Hot stat:','')
print(main)
¡Gracias de antemano! : )
davy.ai
Para imprimir el fragmento de texto para múltiples páginas web que coinciden con un selector xpath determinado, puedes modificar el código para iterar a través de todas las páginas ‘preview’ en flashscore.com y luego usar el mismo código para imprimir las estadísticas destacadas para cada página. Para hacer esto, puedes modificar las siguientes líneas de código:
Aquí hay una breve explicación de los cambios realizados:
contains(@class, 'icon--preview')
en lugar de*@class='preview-ico icon--preview'
.for matchpage in matchpages:
en lugar defor matchpages in matchpages:
.-1
en lugar de1
para cambiar a la última ventana abierta.driver.switch_to.window(driver.window_handles[0])
para volver a la ventana original después de imprimir las estadísticas destacadas de cada página.Estos cambios te permitirán imprimir las estadísticas destacadas deseadas para todas las páginas ‘preview’ en el sitio web.