1
votes

Impossible de se connecter à la page Web en utilisant le sélénium et Python

J'essaie de me connecter à la page Web en particulier mais je ne clique pas sur le bouton Connexion :

<div class="span3 float-right" style="float:right;">                                   
   <button type="submit" class="btn btn-primary">Connect</button>
</div>

J'ai essayé de trouver un élément par css, par nom, etc. mais je ne sais pas pourquoi ne clique pas sur le bouton pour se connecter

La partie html est la suivante

browser.get('https://www.tsago.gr/eshop/account')
print('Browser Opened')
username = browser.find_element_by_id('email')
username.send_keys(email)
password = browser.find_element_by_id('password')

password.send_keys(pwd)
time.sleep(2)
sing_in = browser.find_element_by_xpath('//*[@class="btn btn-primary"]')
sing_in.click()
print('Login Clicked')

Le nom d'utilisateur et le mot de passe sont écrits et ils sont corrects


2 commentaires

Essayez sing_in = browser.find_element_by_xpath ('// button [@ type = "submit"]')


Non rien .. y a-t-il un moyen de cliquer sur Entrée par code? à la place en cliquant sur le bouton? peut-être qu'il a besoin de concentration?


3 Réponses :


0
votes

Le sélecteur css suivant doit identifier de manière unique le bouton que vous recherchez:

driver.find_element_by_css_selector('div.span3.float-right > button')


0 commentaires

0
votes

cela fonctionne pour moi:

driver.find_element_by_xpath('//div[contains(@class,"span3")]/button[contains(@class,"btn-primary")]")

en général, vous devez vous assurer d'identifier le bon élément avant de coder. pour ce faire - utilisez devTools (f12 sur chrome / firefox), et exécutez votre requête dans l'onglet 'console'

pour l'identification de xpath essayez $ x , c'est-à-dire: $ x ('// button [@ type = "submit"]') .

pour le sélecteur css utilisez $$ comme ceci: $$ ("div.someClass # someID")

vous pouvez ensuite survoler les résultats et les éléments trouvés seraient mis en surbrillance

modifier : J'ai remarqué que vous aviez des problèmes avec l'option css, vous pouvez également essayer

driver.find_element_by_css_selector('div.span3 > button[type="submit"]').click()


0 commentaires

1
votes

Il semble que vous étiez assez proche. Peut-être que la Barre de messages des cookies était l'obstacle et vous pouvez soit accepter les cookies , soit faire défiler le bouton Connect pour le voir et vous pouvez utiliser la solution suivante:

  • Bloc de code:

    Browser Opened
    Login Clicked
    
  • Sortie de la console:

    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
    
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    options.add_argument("--disable-extensions")
    # options.add_argument('disable-infobars')
    browser = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    browser.get('https://www.tsago.gr/eshop/account')
    print('Browser Opened')
    WebDriverWait(browser, 30).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input#email[name='email']"))).send_keys("Nikos")
    browser.find_element_by_css_selector("input#password[name='password']").send_keys("Nikos")
    browser.execute_script("window.scrollBy(0,250)", "");
    browser.find_element_by_css_selector("div.control-group div.span3 button.btn.btn-primary").click()
    print('Login Clicked')
    
  • Instantané du navigateur:

 cookies


0 commentaires