Je travaille sur une connexion simulée sur Nike.com . Le contenu de la connexion est dynamique, ce qui signifie qu'il a été défini invisible dans les codes source: Après avoir analysé le code source, j'ai trouvé le code source JavaScript suivant peut être lié au problème: P> if (mexUniteContainer && mexUniteContainer.classList.contains('hidden')) {
mexUniteContainer.classList.remove('hidden');
}
3 Réponses :
Utilisez webDriverwait suivant> XPath pour accéder au formulaire de connexion.
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()
driver.get('https://www.nike.com/')
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,'//div[@id="AccountNavigationContainer"]//button//span[contains(.,"Join / Log In To Nikeâ Plus Account")]'))).click()
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,'//input[@placeholder="Email"]'))).send_keys('pajarnas')
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,'//input[@placeholder="Password"]'))).send_keys('pajarnas')
@pajarnas spécifiant ce que à i> utiliser serait plus utile.
@jhpratt Demandes?
@pajarnas qui vous obtient simplement la page, cela n'analyse rien.
J'ai mis à jour ma question, j'espère que ce sera plus clair!
Je pense que Splash m'a aidé à comprendre.
Peut-être webbot? WebBot fonctionne même des pages Web qui ont une carte d'identification et des noms de classe de manière dynamique et disposent de plus de méthodes et de fonctionnalités que de sélénium ou de mécanisier.
Voici un extrait :) p>
import requests url = 'http://example.com/userinfo.php' values = {'username': 'user', 'password': 'pass'} r = requests.post(url, data=values) print r.content
J'ai essayé mais ça marche toujours avec selenium! J'ai mis à jour ma question, j'espère que ce sera plus clair!
Je pense que Splash m'a aidé à comprendre.
splashjs fonctionne pour moi. Splash est un service de rendu JavaScript. C'est un navigateur Web léger avec une API HTTP, implémenté dans Python 3 à l'aide de Twisted et de QT5. Le réacteur QT (torsadé) est utilisé pour rendre le service entièrement asynchrone permettant de tirer parti de la concurrence WebKit via la boucle principale QT. Certaines des fonctionnalités de Splash: p>
Pouvez-vous partager votre URL si elle est publique?
@Kunduk Nike.com
Quel navigateur essayez-vous? Je ne peux voir aucune pop-up chrome ou firefox? Pouvez-vous poster un instantané de votre popup modulaire?
@Kunduk Cliquez sur Joindre / Connectez-vous à Nike sur le coin supérieur droit. Le formulaire de connexion est une fenêtre contextuelle que vous ne pouvez pas afficher dans le code source.