J'ai rencontré ce problème, j'essayais d'automatiser un processus en Python qui nécessitait de remplir une page Web et de sélectionner des valeurs dans un menu déroulant. Cependant, je suis confronté à un problème où la page ne se met pas à jour même lorsque la valeur déroulante est sélectionnée.
Voici le code pour sélectionner cet élément spécifique :
import os
import time
import pandas as pd
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
options=Options()
#options.page_load_strategy='none'
options.add_experimental_option("detach", True)
options.add_argument('User_profile on mac')
browser = webdriver.Chrome(service=Service(ChromeDriverManager().install()),options=options)
file=r'Example.xlsx'
webpage=r'url'
df_file=pd.read_excel(file)
browser.maximize_window()
for i,row in df_file.iterrows():
time.sleep(3)
browser.get(webpage)
time.sleep(3)
WebDriverWait(browser,20).until(EC.element_to_be_clickable((By.XPATH,'/htm
l/body/div[1]'))).click()
cat2=browser.find_element(By.XPATH,'/html/body/span[1]')
WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.ID,'s2id_autogen1'))).click() #looks for the first dropdown
WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="select2-result-label-21"]'))).click() #finds the correct option
WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.ID, 's2id_autogen3'))).click() #finds the second dropdown
WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="select2-results-4"]/li[11]'))).click() #clicks on load more
WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="select2-result-label-34"]'))).click() #click on correct option
problematic_dropdown=Select(browser.find_element(By.XPATH,'//*[@id="pageAside"]/div[2]/div/dep-gud-request-ors/dep-request-ors/es-view-form/form/dep-control-request-recipients/dep-control-request-recipient/div[2]/div/fieldset/dep-control-request-recipient-household/es-view-select2[1]/div/div[1]/div/select'))
browser.implicitly_wait(3)
problematic_dropdown.select_by_value('1') #once this value is selected, the page does not load
J'ai essayé de sélectionner différentes valeurs, puis de sélectionner à nouveau la valeur souhaitée ; j'ai essayé d'utiliser des attentes implicites et explicites et de mettre le code en veille pendant 20 secondes. Malheureusement, rien ne fonctionne. Lorsque je me connecte manuellement au site et sélectionne une valeur, la page se met à jour normalement.
Je recommande fortement d'utiliser un meilleur sélecteur XPath si vous le pouvez, mais pour ce que vous voulez faire, cliquez simplement directement sur l'élément
option, pas besoin de développer d'abord la zone de sélection p>