2

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

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。

4

1 回答 1

1

除非存在运行时错误,否则您的程序完全是Pythonic 。

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

  • 大概,您将在调用后开始查找用户名get()。因此,理想情况下,您必须诱导WebDriverWait并在其后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)除非您被排除在任何其他选择之外。理想情况下,您应该调用click()orLogin按钮Sign In,如下所示:

    driver.find_element_by_css_selector('cssSelector').click()
    # incase the elements are with in a <form>
    driver.find_element_by_css_selector('cssSelector').submit()
    
于 2020-07-10T05:24:15.363 回答