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")
2964502
quelle

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:

xbello
quelle
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()
falsetru
quelle
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
Anant Singh
quelle
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

Rithin Chalumuri
quelle
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()
Plabon Dutta
quelle