Geben Sie den Benutzernamen und das Passwort mit Selen in Python ein


79

Wie kann ich den Benutzernamen und das Passwort automatisch über den folgenden Link eingeben:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

chromedriver = 'C:\\chromedriver.exe'
browser = webdriver.Chrome(chromedriver)
browser.get('http://www.example.com')

Danach weiß ich wirklich nicht:

username = Select(browser.find_element_by_name('Username'))
password = Select(browser.find_element_by_name('Password'))
username.select_by_visible_text("text")
password.select_by_visible_text("text")

Antworten:


110
driver = webdriver.Firefox(...)  # Or Chrome(), or Ie(), or Opera()

username = driver.find_element_by_id("username")
password = driver.find_element_by_id("password")

username.send_keys("YourUsername")
password.send_keys("Pa55worD")

driver.find_element_by_name("submit").click()

Hinweise zu Ihrem Code:


3
Hey, wissen Sie, wie man den Inhalt der Seite liest, die nach dem Absenden des Formulars geladen wird? Ich schreibe einen Test für eine Website und habe es geschafft, das Formular einzureichen. Jetzt bin ich verloren. Mit anderen Worten, ich möchte den Inhalt der eingeschränkten Zielseite nur für Mitglieder erhalten.
Nino Škopac

3
@ NinoŠkopac Das Objekt "Selen" funktioniert wie ein Browser. Sobald Sie "klicken", wird die neue Zielseite geladen, sodass Sie "selenium.find_element_by_id (" was auch immer ")" ausführen können. Lesen Sie auch über "selenium.implicitly_wait ()", um zwischen den Seitenladevorgängen zu warten.
Xbello

2
Beachten Sie, dass in der obigen Antwort Selen das Treiberhandle sein sollte, das beispielsweise Selen = Webdriver erhalten hat. Firefox ()
Yu Shen

@xbello Vielen Dank!
Sohan Das

28

Verwenden Sie die WebElement.send_keysMethode, um die Tasteneingabe zu simulieren.

nameim Code ( Username, Password) stimmt nicht mit dem tatsächlichen nameder Elemente ( username, password) überein .


username = browser.find_element_by_name('username')
username.send_keys('user1')

password = browser.find_element_by_name('password')
password.send_keys('secret')

form = browser.find_element_by_id('loginForm')
form.submit()

# OR  browser.find_element_by_id('submit').click()

Wenn ich das versuche, erhalte ich folgende Fehlermeldung: 'StatefulBrowser'-Objekt hat kein Attribut' find_element_by_name '
Ana Claudia

1
@AnaClaudia, es ist möglich, dass die API geändert wurde, seit ich diese Antwort gepostet habe. Bitte überprüfen Sie die Dokumentation.
Falsetru

9
user = driver.find_element_by_name("username")
password = driver.find_element_by_name("password")
user.clear()
user.send_keys("your_user_name")
password.clear()
password.send_keys("your_password")
driver.find_element_by_name("submit").click()

Hinweis:

  • Wir verwenden user.clear(), um das Eingabefeld zu löschen.
  • Zum Auffinden der Schaltfläche "Senden" können Sie eine andere Methode verwenden, die auf dem Seitenquellcode basiert. Informationen finden Sie unter Auffinden von Elementen

4

In einigen Fällen, in denen das Element nicht interaktiv ist, sendKeys()funktioniert es nicht und es ist wahrscheinlich, dass Sie auf ein Element stoßen ElementNotInteractableException.

In solchen Fällen können Sie Javascript ausführen, das die Werte festlegt, und dann zurückschicken.

Beispiel:

url = 'https://www.your_url.com/'

driver = Chrome(executable_path="./chromedriver")
driver.get(url)

username = 'your_username'
password = 'your_password'

#Setting the value of email input field
driver.execute_script(f'var element = document.getElementById("email"); element.value = "{username}";')

#Setting the value of password input field
driver.execute_script(f'var element = document.getElementById("password"); element.value = "{password}";')

#Submitting the form or click the login button also
driver.execute_script(f'document.getElementsByClassName("login_form")[0].submit();')

print(driver.page_source)

Referenz:

https://www.quora.com/How-do-I-resolve-the-ElementNotInteractableException-in-Selenium-WebDriver


0
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait

# If you want to open Chrome
driver = webdriver.Chrome()
# If you want to open Firefox
driver = webdriver.Firefox()

username = driver.find_element_by_id("username")
password = driver.find_element_by_id("password")
username.send_keys("YourUsername")
password.send_keys("YourPassword")
driver.find_element_by_id("submit_btn").click()
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.