在python中使用selenium填写用户名和密码

296*_*502 67 python selenium

如何通过以下链接自动填写用户名和密码:

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')
Run Code Online (Sandbox Code Playgroud)

之后我真的不知道:

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")
Run Code Online (Sandbox Code Playgroud)

xbe*_*llo 90

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()
Run Code Online (Sandbox Code Playgroud)

您的代码注释:

  • 嘿,你知道如何阅读提交表格后加载的页面内容吗?我正在为一个网站写一个测试,我设法提交了表格,现在我迷路了.换句话说,我想获取受限制的内容,仅限成员登陆页面. (3认同)
  • @NinoŠkopac"selenium"对象的工作方式类似于浏览器.一旦你"点击"它就会加载新的登陆页面,所以你可以做'selenium.find_element_by_id("what")''.另请阅读"selenium.implicitly_wait()"以在页面加载之间等待. (3认同)
  • 注意,在上面的答案中,selenium应该是获得的驱动程序句柄,例如,selenium = webdriver.Firefox() (2认同)

fal*_*tru 27

使用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()
Run Code Online (Sandbox Code Playgroud)

  • @AnaClaudia,自从我发布这个答案以来,API 可能发生了变化。请检查文档。 (2认同)

Ana*_*ngh 7

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()
Run Code Online (Sandbox Code Playgroud)

注意:

  • 我们用user.clear()它来清除输入字段.
  • 要查找提交按钮,您可以使用基于页面源代码的任何其他方法.有关信息,请参阅定位元素


Rit*_*uri 6

在某些情况下,当元素不可交互、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)

Run Code Online (Sandbox Code Playgroud)

参考:

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