Selenium Python - 更紧凑或 Pythonic 输入用户名和密码的方式?

Selenium Python - More compact or Pythonic way of inputting Username and Password?

我需要登录一个网站,我已经有了以下代码,可以正常工作:

username = driver.find_element_by_name('uname')
password = driver.find_element_by_name('password')
username.send_keys('username'), password.send_keys('password', Keys.RETURN)

目前,用户名和密码已硬编码到程序中,但出于安全原因,我最终会要求用户同时提供。有没有办法让我写的东西更紧凑或更 Pythonic?为了我自己的利益,我正在努力尽可能地接近 PEP8。

你的程序完全是Pythonic除非有运行时错误。

话虽如此,从 的角度来看,有以下几个问题:

  • 据推测,您将在调用 get() 后开始查找 用户名 。因此,理想情况下,您必须为 element_to_be_clickable() 引入 ,然后按如下方式调用 send_keys()

    driver.get(url)
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, "'uname'"))).send_keys('username')
    driver.find_element_by_name('password').send_keys('password')
    
  • 此外,我建议避免尝试 send_keys(Keys.RETURN),除非您别无选择。理想情况下,您应该在 LoginSign In 按钮上调用 click(),如下所示:

    driver.find_element_by_css_selector('cssSelector').click()
    # incase the elements are with in a <form>
    driver.find_element_by_css_selector('cssSelector').submit()