2017-10-08 1 views
0

Je peux localiser l'XPATH de l'élément que je veux, mais il ne me permettra pas de cliquer dessus. En particulier, il lance une exception "WebDriverException".Python Selenium cliquez sur l'élément par xpath

from selenium import webdriver 
browser=webdriver.Chrome() 
url='https://fred.stlouisfed.org/categories/32261' 
browser.get(url) 
click=browser.find_element_by_xpath("//a[@title='next page']") 
print(click.get_attribute('title')) 
click.click() 

Renvoie l'erreur suivante: enter image description here

+0

Il semblerait que l'utilisation « send_keys (page suivante) avant la « click.click() » travaille – Kyle

Répondre

-1

Ainsi, le XPath était là, mais je ne crois pas que j'étais en fait montrai quand essayer l'initiale « click.click(). » Il pourrait y avoir une meilleure solution, mais cela semble fonctionner pour l'instant.

from selenium import webdriver 
    browser=webdriver.Chrome() 
    url='https://fred.stlouisfed.org/categories/32261' 
    browser.get(url) 
    click=browser.find_element_by_xpath("//a[@title='next page']") 
    print(click.get_attribute('title')) 
    click.send_keys('next page') 
    click.click() 
+0

' click.send_keys. ('page suivante') 'est juste une solution de contournement qui ne résout pas vraiment le problème – Andersson

0

Vous ne pouvez pas cliquer sur l'élément requis car il n'est pas visible actuellement. Vous devez faire défiler vers le bas pour le bouton « Suivant » avant de cliquer dessus:

from selenium import webdriver 
browser = webdriver.Chrome() 
url = 'https://fred.stlouisfed.org/categories/32261' 
browser.get(url) 
next_button = browser.find_element_by_xpath("//a[@title='next page']") 
browser.execute_script("arguments[0].scrollIntoView();", next_button) 
next_button.click() 
+0

Salut Andersson, si vous ne me dérange pas la question, est le execute_script réagir comme les send_keys? Je vais essayer de voir si je peux intégrer le execute_script J'apprécie la réponse – Kyle

+0

Hm ... Je ne suis pas sûr de vous avoir bien compris. 'send_keys()' a l'intention d'entrer des caractères pour entrer des champs ou exécuter des combinaisons de touches, par exemple Ctrl + t, etc. .. 'execute_script()' vous permet d'exécuter du code JavaScript directement depuis votre code Python – Andersson