अजगर में सेलेनियम का उपयोग करके उपयोगकर्ता नाम और पासवर्ड भरें


80

मैं नीचे दिए गए लिंक पर उपयोगकर्ता नाम और पासवर्ड कैसे भर सकता हूं:

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')

उसके बाद मैं वास्तव में नहीं जानता:

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

जवाबों:


115
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()

आपके कोड के लिए नोट:

  • find_element_by_name('Username'): Usernameपूंजीकृत कुछ भी मेल नहीं खाता है।
  • Select()एक चयनित तत्व ( https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select ) पर कार्य करने के लिए उपयोग किया जाता है

3
अरे, क्या आप जानते हैं कि फॉर्म सबमिट करने के बाद लोड किए गए पेज की सामग्री को कैसे पढ़ें? मैं एक वेबसाइट के लिए एक परीक्षण लिख रहा हूं, और मैं फॉर्म जमा करने में कामयाब रहा, और अब मैं खो गया हूं। दूसरे शब्दों में, मैं प्रतिबंधित सामग्री के सदस्यों को केवल लैंडिंग पृष्ठ प्राप्त करना चाहता हूं।
निनो Nकोपैक

3
@ Ninoiumkopac "सेलेनियम" ऑब्जेक्ट एक ब्राउज़र की तरह काम करता है। एक बार जब आप "क्लिक" करते हैं तो यह नए लैंडिंग पृष्ठ को लोड करता है, इसलिए आप 'selenium.find_element_by_id ("जो भी हो) कर सकते हैं। पृष्ठ लोड के बीच प्रतीक्षा करने के लिए "selenium.implicitly_wait ()" के बारे में भी पढ़ें।
xbello

2
ध्यान दें, उपर्युक्त उत्तर में, सेलेनियम होना चाहिए ड्राइवर का हैंडल, उदाहरण के लिए, सेलेनियम = webdriver.Firefox ()
यू शेन

@xbello बहुत बहुत धन्यवाद!
सोहन दास

28

WebElement.send_keysकुंजी टाइपिंग का अनुकरण करने के लिए विधि का उपयोग करें।

nameकोड ( Username, Password) nameतत्वों के वास्तविक से मेल नहीं खाता ( username, password)।


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()

जब मैं यह कोशिश करता हूं तो मुझे यह त्रुटि मिलती है: 'StatefulBrowser' ऑब्जेक्ट में कोई विशेषता नहीं है 'find_element_by_name'
Ana Claudia

2
@AnaClaudia, जब से मैंने यह उत्तर पोस्ट किया है तब से यह संभव है कि इसे बदल दिया जाए। कृपया दस्तावेज़ देखें।
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()

ध्यान दें:

  • हम user.clear()इनपुट क्षेत्र को साफ़ करने के लिए उपयोग करते हैं ।
  • सबमिट बटन का पता लगाने के लिए आप पृष्ठ स्रोत कोड के आधार पर किसी अन्य विधि का उपयोग कर सकते हैं। जानकारी के लिए तत्वों का पता लगाना

4

कुछ मामलों में जब तत्व इंटरेक्टेबल नहीं होता है, sendKeys()तो काम नहीं करता है और आपका एनकाउंटर होने की संभावना होती है ElementNotInteractableException

ऐसे मामलों में, आप जावास्क्रिप्ट सेट कर सकते हैं जो मान सेट करता है और फिर वापस पोस्ट कर सकता है।

उदाहरण:

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)

संदर्भ:

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()

0

मैं सेलेनियम के लिए नया हूं और मैंने उपरोक्त सभी समाधानों की कोशिश की, लेकिन वे काम नहीं करते हैं। अंत में, मैंने इसे मैन्युअल रूप से आज़माया

driver = webdriver.Firefox()
import time

driver.get(url)

time.sleep(20)

print (driver.page_source.encode("utf-8"))

तब मुझे वेब से सामग्री मिल सकती थी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.