J'essaie de sélectionner Cotes de l'UE CODE> à partir de la liste déroulante dans ce HTML:
Exception has occurred: NoSuchElementException
Message: no such element: Unable to locate element: {"method":"css selector","selector":"user-header-r1 > ul"}
4 Réponses :
Développer Dropdown et faire Li code> éléments visibles.
WebDriverwait code> attendra les conditions d'élément requises, dans votre cas, c'est une visibilité. Pour obtenir l'élément par texte en utilisant XPath, vous devez utiliser des quotas
// li [. = 'Quelque texte'] code> dans le texte:
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()
wait = WebDriverWait(driver, 5)
driver.get("..")
target = "EU Odds"
driver.find_element(By.ID, "user-header-oddsformat-expander").click()
wait.until(ec.element_to_be_clickable((By.XPATH, "//li[.='" + target + "']"))).click()
Je reçois l'erreur suivante sur la dernière ligne: a eu lieu: l'objet Typeerror 'str' n'est pas appelable code>
Typo avec arguments de la méthode. Fixé
Merci! Fini par l'utiliser car j'avais des problèmes avec la réponse acceptée. L'élément cliquable ne se chargeait pas avant que cet extrait ait essayé de cliquer dessus.
A parlé bientôt! Semble être intermittent - parfois il sélectionne cotes de l'UE code> et parfois ce n'est pas :(
pilote.find_element (by.Id, "User-Header-OddsFormat-Expander"). Cliquez sur () code> sélectionne définitivement la liste déroulante. Si je passe par
wait.untitil (EC.Element_to_be_clickable (((by.xpath, "//li[.= '" + cible + "']")))). Cliquez sur () code> alors il sélectionne toujours
Cotes de l'UE code>. Etrange comme ma compréhension de cette ligne est que le sélénium est censé attendre jusqu'à ce qu'il puisse sélectionner
Cotes de l'UE code>?
A réussi à aller autour de cela en mettant un pendant que code> en boucle dans cette vérification, le bon élément a été sélectionné ou le code de sélection retentit. Permet toujours de le faire juste après 2-3 tentatives, mais certainement aucune consistance!
Pour sélectionner l'élément avec du texte sous la forme en utilisant en utilisant note forte>: Vous devez ajouter les importations suivantes: p>
element_to_be_clickable () code> et vous pouvez utiliser des éléments suivants Stratégies de localisation :
css_selector code>: p>
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
xpath code>: p>
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//ul[@id='user-header-oddsformat']//li/a[starts-with(@onclick, 'changeOddsFormat')]/span[text()='EU Odds']"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "ul#user-header-oddsformat li:first-child>a[onclick^='changeOddsFormat']>span"))).click()
Ces deux temps tristement :(
Target de votre élément ayant l'attribut avec ... Donc, je pense que vous avez besoin d'une gâchette d'un autre élément avant d'attaquer la cible d'élément, essayez de suivre le code suivant: p> Caché code> Valeur:
#click this first
self.driver.find_element_by_css_selector('div#user-header-r1 > div > a#user-header-oddsformat-expander > span').click()
target = 'EU Odds'
self.driver.find_element_by_xpath('//ul[@id="user-header-oddsformat"]//span[text()="' +target +'"]').click()
formez l'élément HTML, l'élément que vous essayez de sélectionner a une identité nommée
Ceci ouvrira d'abord l'arborescence HTML pour Un identifiant de User-Header-R1 Code> Pas une classe CSS, essayez d'utiliser
Find_Element_by_id ('User-Header-R1') code>
Ensuite, si l'élément est trouvé, essayez d'utiliser
wind_element_by_tag_name ('ul') code> sur la même recherche, comme:
user-header-r1 code> qui est le premier
div code> puis trouve l'élément
ul code> à l'intérieur du
div code> < / p> p>
User-Header-R1 Code> est un identifiant, pas une classe CSS, vous essayez de trouver l'élément par sélecteur CSS, ce qui n'existe pas. Essayez de trouver la recherche par
id code>
Merci. Essayé ceci:
self.driver.find_element_by_id ("User-Header-R1> ul"). Find_Element_by_xpath ("./ LI [. =" Target + "]"). Cliquez sur () CODE> MAIS < Code> Impossible de localiser l'élément: {"Méthode": "Sélecteur CSS", "Sélecteur": "[ID =" User-Header-R1> UL "]"} code>. Comme vous pouvez dire que je suis vraiment nouveau de gratter afin que je puisse avoir besoin de petits pas!