【问题标题】:Selenium Chromedriver fails to fill password correctlySelenium Chromedriver 无法正确填写密码
【发布时间】:2020-06-14 15:54:05
【问题描述】:

我正在访问一个网页,其中包含给定订单的详细信息,以便在我自己的数据库中自动填充该订单。

最初我从 Edgedriver 开始,但如果链接有图形作为覆盖,Edge 似乎无法下载文件(它只询问我是否要保存图片 - 欢迎提供解决此问题的提示,也...)。通常我使用 Firefox 作为最不爱管闲事的浏览器,但 Geckodriver 不适用于 VBA。

所以我切换到 Chromedriver 现在会产生以下奇怪的错误:

当我通过“SendKeys”发送正确的密码时,结果是“Bad Credentials”。直接在字段中输入相同的密码,然后让Chromedriver按“点击”即可。

    .Get "https://my-website.com"

    .FindElementById("username").Clear   ' login
    .FindElementById("password").Clear
    .FindElementById("username").SendKeys Trim(UserName)
    .FindElementById("password").SendKeys Trim(Password)    'The content in the password field must be somehow different to the text entered via keyboard ***

    .FindElementByClass("login").Click

感谢任何帮助

使用过的应用: Windows 10 专业版(64 位)、Access 2016、Chrome 83.0.4103.97(64 位)、Chromedriver 83.0.4103.39

【问题讨论】:

  • 使用完整的错误堆栈跟踪更新问题。
  • 您能否简要说明如何以及在何处获取完整的跟踪信息?提前致谢
  • 我更进一步:密码包含字母和感叹号。如果我让驱动输入感叹号前面的字母,自己用键盘输入感叹号,再用例程完成密码,登录成功。我怀疑 ASCII 与 unicode 的区别。有什么想法吗?

标签: vba selenium ms-access


【解决方案1】:

你可以试试这样的。 如果你的密码是password,也就是8个字符,那么你可以使用if len("passord") = 8来检查是否输入了完整的密码。

Do until Len(MyChromeDriver.FindElementById("PasswordTextBox").Value) = 8
    MyChromeDriver.FindElementById("Password").Clear
    MyChromeDriver.FindElementById("Password").SendKeys "password"
Loop

【讨论】:

  • 我终于更改了密码并用破折号替换了感叹号 - 你猜怎么着 - 它现在可以正常工作了,没有任何问题。虽然我仍然不知道这两个字符之间的区别应该在哪里,但问题已经解决了(至少对我来说)。但是感谢 KNAPPYFLASH 提供了一个可能的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多