Je travaille sur un projet Selenium, et je dois cliquer sur le premier enfant de cet ul obtenu par xpath:
bot.find_element_by_xpath('//*[@id="mailappcomponent"]/div/div/div[2]/div/div/div[2]/div/div[1]/ul').click()
Pouvez-vous m'aider?
Pour identifier le premier enfant de l' <ul>
élément:
//*[@id="mailappcomponent"]/div/div/div[2]/div/div/div[2]/div/div[1]/ul
vous devez utiliser tag_name
les attributs et / ou de l'élément enfant / descendant.
Dans le cas où le premier enfant (descendant) est un, <li>
vous devez ajouter /li
à la fin comme suit:
//*[@id="mailappcomponent"]/div/div/div[2]/div/div/div[2]/div/div[1]/ul/li
Incase le premier enfant (descendant) est un que <ol>
vous devez ajouter /ol
à la fin comme suit:
//*[@id="mailappcomponent"]/div/div/div[2]/div/div/div[2]/div/div[1]/ul/ol
Maintenant, pour cliquer sur l'élément, vous devez induire WebDriverWait pour le element_to_be_clickable()
et vous pouvez utiliser l'une des stratégies de localisation suivantes :
//in case of descendant li
WebDriverWait(bot, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@id="mailappcomponent"]/div/div/div[2]/div/div/div[2]/div/div[1]/ul/li"))).click()
//in case of descendant ol
WebDriverWait(bot, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@id="mailappcomponent"]/div/div/div[2]/div/div/div[2]/div/div[1]/ul/ol"))).click()
Remarque : vous devez ajouter les importations suivantes:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots