아래 링크를 통해 사용자 이름과 비밀번호를 자동으로 채우려면 어떻게해야합니까?
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")
답변
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()
Select Element ( https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select ) 에서 작동하는 데 사용됩니다.
답변
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()
답변
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()
입력 필드를 취소하기 위해. - 제출 버튼을 찾으려면 페이지 소스 코드를 기반으로하는 다른 방법을 사용할 수 있습니다. 자세한 내용은 요소 찾기를 참조하십시오.
답변
요소가 상호 작용할 sendKeys()
수없고 작동하지 않고 ElementNotInteractableException
.
이러한 경우 값을 설정 한 다음 다시 게시 할 수있는 javascript를 실행하도록 선택할 수 있습니다.
예:
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
답변
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()
답변
나는 셀레늄을 처음 접했고 위의 모든 솔루션을 시도했지만 작동하지 않습니다. 마지막으로 수동으로 시도했습니다.
driver = webdriver.Firefox()
import time
driver.get(url)
time.sleep(20)
print (driver.page_source.encode("utf-8"))
그러면 웹에서 콘텐츠를 얻을 수 있습니다.