-1
votes

Sélénium pour vous connecter au site Web à l'aide d'éléments de pilote

Ci-dessous, j'ai joint le code HTML pour le nom d'utilisateur et le mot de passe:

nom d'utilisateur: p>

p>

username = driver.find_element_by_xpath("//*[@id=applicationHost]/div/div[2]/div[2]/div[4]/div[11]/div/div[2]/div[1]/div/form/div/div/div/div[3]/div[2]/div/div[1]/div[1]/div[1]/input")
password = driver.find_element_by_xpath("//*[@id=applicationHost]/div/div[2]/div[2]/div[4]/div[11]/div/div[2]/div[1]/div/form/div/div/div/div[3]/div[2]/div/div[1]/div[1]/div[2]/input")


4 commentaires

Qu'avez-vous essayé et quel était le résultat? Plutôt que de demander lequel essayer, essayez-en un ... Essayez-les tous et voyez ce qui se passe. Lisez un guide sur lequel les localisateurs sont mieux supportés, mieux performants, etc. Il y a déjà une tonne de guides.


J'ai tenté les localisateurs d'éléments suivants: CSS_SLORT, NOM, ID, CLASSE ET XPATH. Pour tous ceux dont j'ai reçu une erreur, aucun élément de ce type n'existait. À l'exception de XPath, où j'ai tenté la méthode WebDriverWait et a reçu une erreur temporelle.


Ensuite, vous devez mettre à jour votre question avec ce que vous avez essayé et les résultats de chacun ... Spécification du message d'erreur exact.


Comment code HTML pour le bouton et code pour l'élément nominal associé?


3 Réponses :


0
votes

Avec l'extrait que vous avez posté, je peux vous suggérer:

driver.find_element(By.ID, "removeImage_E61858CD-F1F9-42BD-8848-8CB6B42ED2FE").click().


2 commentaires

La plupart des temps, je rencontre des éléments comme ceux-ci avec un GUID / UUID, ils sont générés dynamiquement. Ce qui signifie la prochaine fois qu'il pourrait ne pas être pilote.find_element (by.Id, "retirerImage_e61858cd-f1f9-42bd-8848-8cb6b42ed2fe") plus. Le GUID / UUID pourrait changer. Je suggérerais d'utiliser la méthode by.xpath avec un retirerImage _ clause.


Je viens de réaliser que je ne pourrai pas dire si cela fonctionne jusqu'à ce que j'entre mon nom d'utilisateur et mon mot de passe pour vous connecter. Après avoir copié le XPath en faisant un clic droit sur le code HTML pour les cases d'entrée Nom d'utilisateur et mot de passe, il a indiqué qu'il n'y avait pas de tel élément dans mon code. Pourriez-vous m'aider à déterminer l'élément pour le code que j'ai ajouté (au poste d'origine)



1
votes

Je suggérerais également d'attendre explicitement l'élément.

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()
url="http://www.example.com"#your url here
driver.get(url)
element=WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH ,'//img[starts-with(@id,'removeImage_')]')))
#or '//img[contains(@id,'removeImage_')]'
element.click()


2 commentaires

J'ai tenté cela et j'ai reçu l'erreur TimeoutException.


Ceci est l'URL de la page de connexion où je me bats pour entrer mon nom d'utilisateur et mot de passe: plate-forme.spgi.spglobal.com/web/...



0
votes

Vous pouvez localiser les éléments par nom ...

username = driver.find_element_by_name('username')
password = driver.find_element_by_name('password')


1 commentaires

Je reçois une exception de ce type pour cela. Je pensais que c'était une des solutions aussi.