J'ai une page Web qui comporte des boutons Premier, Précédent, 1, 2, 3, 4, 5, Suivant, Dernier
Je veux cliquer automatiquement sur "Suivant" (et autres) mais je ne trouve pas la bonne façon de le faire à partir d'une liste non signée.
Je peux accéder à l'élément spécifique de la liste. Cependant, je ne peux pas effectuer un .click () sur cet élément sans renvoyer une erreur.
Ceci est la section du code html
<nav>
<input type="hidden" id="page" name="page" value="2">
<input type="hidden" id="resetPage" name="resetPage" value="">
<input type="hidden" id="info_firstPage" value="/info#PCB">
<ul id="info_pageclass" class="pageclass">
<li class="disabled" style="pointer-events: none;"><a href="/info#PCB"><span>First</span></a></li>,
<li class="disabled" style="pointer-events: none;"><a href="/info/page0#PCB" rel="prev"><span>Prev</span></a></li>,
<li class="hidden-xs" style="pointer-events: none;"><a href="/info" style="background: #41ace2 !important; color: #fff !important;">1</a></li>,
<li class="hidden-xs"><a href="/info/page2#PCB">2</a></li>,
<li class="hidden-xs"><a href="/info/page3#PCB">3</a></li>,
<li class="hidden-xs"><a href="/info/page4#PCB">4</a></li>,
<li class="hidden-xs"><a href="/info/page5#PCB">5</a></li>,
<li><a href="/info/page2#PCB" rel="next"><span>Next</span></a></li>,
<li><a href="/info/page9#PCB"><span>Last</span></a></li>
</ul>
</nav>
C'est le code python qui passe par l'EDI
>>> soup = BeautifulSoup(driver.page_source, features='html.parser')
>>> next = soup.find("ul", attrs={"id":"info_pageclass"}).find_all("li")[7]
>>> print(next)
<li>
<a href="/info/page2#PCB" rel="next">
<span>Next</span>
</a>
</li>
Ces instructions renvoient toutes la même erreur que celle indiquée (une fois)
>>> next.send_keys(Keys.ENTER)
>>> next.click()
>>> next.a.click()
TypeError: 'NoneType' object is not callable
Pour click()
sur l'élément avec le texte suivant, vous devez induire WebDriverWait pour que l' élément soit cliquable et vous pouvez utiliser l'une des solutions suivantes:
Utilisation CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "ul.pageclass#info_pageclass li>a[rel='next']>span"))).click()
Utilisation XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//ul[@class='pageclass' and @id='info_pageclass']//li/a[@rel='next']/span[text()='Next']"))).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