在python中使用selenium填写用户名和密码
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/21186327/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Fill username and password using selenium in python
提问by 2964502
How can I auto fill the username and password over the link below:
如何通过以下链接自动填写用户名和密码:
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')
After that I really do not know:
之后我真的不知道:
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")
采纳答案by xbello
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()
Notes to your code:
代码注释:
find_element_by_name('Username'):Usernamecapitalized doesn't match anything.Select()is used to act on a Select Element (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select)
find_element_by_name('Username'):Username大写不匹配任何内容。Select()用于对 Select 元素进行操作 ( https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select)
回答by falsetru
Use WebElement.send_keysmethod to simulate key typing.
使用WebElement.send_keys方法来模拟按键输入。
namein the code (Username, Password) does not match actual nameof the elements (username, password).
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()
回答by Anant Singh
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()
Note:
笔记:
- we use
user.clear()in order to clear the input field. - for locating submit button you can use any other method based on the page source code. for info see locating elements
- 我们使用
user.clear()以清除输入字段。 - 为了定位提交按钮,您可以使用基于页面源代码的任何其他方法。有关信息,请参阅定位元素
回答by Rithin Chalumuri
In some cases when the element is not interactable, sendKeys()doesn't work and you're likely to encounter an ElementNotInteractableException.
在某些情况下,当元素不可交互、sendKeys()不起作用并且您可能会遇到ElementNotInteractableException.
In such cases, you can opt to execute javascript that sets the values and then can post back.
在这种情况下,您可以选择执行设置值的 javascript,然后可以回发。
Example:
例子:
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)
Reference:
参考:
https://www.quora.com/How-do-I-resolve-the-ElementNotInteractableException-in-Selenium-WebDriver
https://www.quora.com/How-do-I-resolve-the-ElementNotInteractableException-in-Selenium-WebDriver
回答by Plabon Dutta
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()

