【问题标题】:send_keys(Keys.RETURN) submitting 1 extra character (python selenium)send_keys(Keys.RETURN) 提交 1 个额外字符 (python selenium)
【发布时间】:2017-11-26 11:34:42
【问题描述】:

我正在尝试自动化登录过程。

为此,我在各自的字段中使用 send_keys('email') 和 send_keys('password'),如下所示:

email = driver.find_element_by_xpath('//*[@id="email"]')
email.send_keys('e@mail.com')

pwd = driver.find_element_by_xpath('//*[@id="password"]')
pwd.send_keys('pwd12345')

这两步都成功了。现在,我想使用“return”键提交登录凭据并登录。为此,我尝试过:

pwd.send_keys(Keys.RETURN)

我尝试输入的密码长度为 8 个字符。输入 8 个字符后,pwd.send_keys(Keys.RETURN) 在提交凭据之前在密码字段中输入第 9 个字符,导致“电子邮件地址或密码不正确”。

我也试过了:

email.send_keys(Keys.RETURN) - 也返回“不正确的电子邮件地址或密码”

pwd.submit() - 完全清除电子邮件和密码字段并且不登录(?)

想法?

【问题讨论】:

  • 你可以试试 Keys.ENTER 吗?
  • Selenium, WebDriver type (gecko/chrome/ie) type & version, Browser type & version please.谢谢
  • 您的程序在我的机器上运行良好。我能够成功登录到 Paypal。你能再试一次吗

标签: python selenium


【解决方案1】:

你能试试下面的代码吗?

pwd = driver.find_element_by_xpath('//*[@id="password"]')
ActionChains(driver).send_keys_to_element(pwd,'pwd12345').send_keys_to_element(pwd, Keys.RETURN).perform()

【讨论】:

  • 使用您的代码会完全清除电子邮件和密码字段并且不会登录,这与 pwd.submit() 所做的方式相同。 FWIW,这是一个 PayPal 登录表单。也许安全实施可能会导致这种情况?
  • @pizzaman5000 能给我Paypal的网址吗?我正在我的 Paypal 帐户上进行测试,它运行良好。
【解决方案2】:

这是您问题的答案:

考虑到您尝试使用一组有效的凭据登录到您的 PayPal 帐户,以下代码块适用于所有 3 个选项,如下所示:

  • 使用click()
  • 使用Keys.ENTER
  • 使用Keys.RETURN

话虽如此,我建议您在将任何文本输入任何input tag 之前考虑使用click()clear() 方法。这是工作代码块:

driver.get('https://www.paypal.com/in/home');
driver.implicitly_wait(20);
driver.find_element_by_id('ul-btn').click();
email = driver.find_element_by_id('email')
email.click();
email.clear();
email.send_keys('debanjan.selenium@gmail.com');
password = driver.find_element_by_id('password');
password.click();
password.clear();
password.send_keys('dev_anjan');

#Using Keys.ENTER
#password.send_keys(Keys.ENTER);

#Using Keys.RETURN
password.send_keys(Keys.RETURN);

#Using LogIn Button Click
#login_button = driver.find_element_by_id('btnLogin')
#login_button.click();

如果这能回答您的问题,请告诉我。

【讨论】:

    【解决方案3】:

    请尝试这种方式,它对我有用:

    email = driver.find_element_by_xpath('//*[@id="email"]')
    email.send_keys('e@mail.com')
    
    pwd = driver.find_element_by_xpath('//*[@id="password"]')
    pwd.send_keys('pwd12345')
    login_button = driver.find_element_by_xpath('//*[@id="btnLogin"]')
    login_button.click()
    

    如果在密码字段上按 Enter,您应该像普通人一样按 Log In 按钮。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 2021-08-02
      • 2018-06-18
      • 1970-01-01
      相关资源
      最近更新 更多