recherche

Maison  >  Questions et réponses  >  le corps du texte

La page ne se met pas à jour après avoir sélectionné l'option dans l'élément déroulant dans Selenium

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.

P粉043470158P粉043470158464 Il y a quelques jours657

répondre à tous(1)je répondrai

  • P粉798010441

    P粉7980104412023-09-12 12:45:17

    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

    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/option[@value="1"]').click

    répondre
    0
  • Annulerrépondre