Ich bin auf dieses Problem gestoßen: Ich habe versucht, einen Prozess in Python zu automatisieren, der das Ausfüllen einer Webseite und das Auswählen von Werten aus einem Dropdown-Menü erfordert. Ich stehe jedoch vor einem Problem, bei dem die Seite nicht aktualisiert wird, selbst wenn der Dropdown-Wert ausgewählt ist.
Dies ist der Code zur Auswahl dieses spezifischen Elements:
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
Ich habe versucht, verschiedene Werte auszuwählen und dann den gewünschten Wert erneut auszuwählen. Ich habe versucht, implizite und explizite Wartezeiten zu verwenden und den Code 20 Sekunden lang in den Ruhezustand zu versetzen. Leider funktioniert nichts. Wenn ich mich manuell bei der Site anmelde und einen Wert auswähle, wird die Seite normal aktualisiert.
如果可以的话,我强烈建议使用更好的 xpath 选择器,但是对于您要做什么,只需直接单击
option
元素即可,不需要先展开选择框 p>