sur le site Web suivant: https://www1.hkexnews.hk/ Recherche / Titleearch.xhtml? Lang = fr
J'essaie de sélectionner l'option de liste déroulante suivante via SELENIUM:
Sous J'ai réalisé que vous devez utiliser Ce que j'ai devait fonctionner mais ce n'est pas? Est-ce que quelqu'un peut m'aider à résoudre ce problème, s'il vous plaît? P> i reçoit actuellement un élément non trouvé d'une erreur p> p> p> Catégorie de titre et type de document Code>, sur la première liste déroulante I Sélectionnez Catégorie de titre code>, puis sur la deuxième liste, je souhaite sélectionner Annonces et avis -> Nouvelles annonces (Émetteurs classés / nouveaux candidats -> Résultats d'allotissement Code>. P> pilote.find_element_by_csss_selector () code> comme aucun des éléments de la liste n'a ID unique.
J'ai également réalisé que vous devez faire défiler la page lorsque l'option n'est pas affiche, de sorte que le sélecteur CSS puisse le ramasser. P>
3 Réponses :
Pouvez-vous essayer d'obtenir une liste des valeurs déroulantes en utilisant probablement un sélecteur CSS comme p>
ul li a p> blockQuote>
puis en boucle pour trouver une valeur correspondante et cliquez dessus P>
La chose est que je ne peux même pas boucler à travers elle. Je ne trouve pas la liste déroulante qui apparaît lorsque je clique sur "Nouvelles annonces (émetteurs répertoriés / nouveaux candidats) en premier lieu
Idéalement, nous ne devrions pas sélectionner un élément avec un tel sélecteur CSS complexe, essayez de raccourcir le sélecteur CSS.
ALORS, P>
Essayez de survoler la souris au premier élément de la liste déroulante de la liste déroulante. / p> puis, p> Essayez de faire défiler jusqu'à l'élément dont vous avez besoin d'utiliser, P> driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center', inline: 'nearest'});",element_to_be_selected)
En ce qui concerne le sélecteur CSS complexe - aucun élément de la page n'a d'identifiant / nom à partir de la barre réelle dont la liste déroulante est plainte. Par conséquent, le seul moyen de sélectionner des éléments dans cette barre est de les trouver avec un sélecteur CSS complexe droit?
Si vous avez une classe alignée sur les balises, vous pouvez l'utiliser pour réduire la taille du CSS. Comme div.class li.class code>
Pour cliquer sur l'élément à partir de la liste déroulante Induce webDriverWait code> et présence_of_element_located () code> puis utilisez emplacement_once_scrollle_into_view code> et cliquez sur l'élément en utilisant XPath. from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get('https://www1.hkexnews.hk/search/titlesearch.xhtml?lang=en')
driver.maximize_window()
wait = WebDriverWait(driver,40)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'div.combobox-input-wrap a[data-value="rbAll"]'))).click()
wait.until(EC.element_to_be_clickable((By.XPATH,'//div[@class="droplist-item"]/a[contains(.,"Headline Category")]'))).click()
wait.until(EC.element_to_be_clickable((By.XPATH,'//div[@id="rbAfter2006"]//div[@class="combobox-input-wrap"]/a[contains(.,"ALL")]'))).click()
wait.until(EC.element_to_be_clickable((By.XPATH,'//div[@class="droplist-group"]//ul[@class="droplist-items"]//li/a[contains(.,"Announcements and Notices")]'))).click()
ele=wait.until(EC.presence_of_element_located((By.XPATH,'//div[@class="droplist-group droplist-submenu level2"]//ul//li/a[contains(.,"New Listings (Listed Issuers/New Applicants)")]')))
ele.location_once_scrolled_into_view
ele.click()
ele2=wait.until(EC.presence_of_element_located((By.XPATH,'//div[@class="droplist-group droplist-submenu level3"]//ul//li/a[contains(.,"Allotment Results")]')))
ele2.location_once_scrolled_into_view
ele2.click()
J'ai trouvé, dans le sélecteur de CSS final que je fais, il échoue à la dernière "div> ul". Cette "ul" est celle qui ne peut pas être trouvée, lorsque je le regarde clairement dans le HTML du site Web. Il existe littéralement sous la div alors je suis complètement perdue