【问题标题】:Sending keys via Selenium to Google Auth fails (using Python and Firefox)通过 Selenium 向 Google Auth 发送密钥失败(使用 Python 和 Firefox)
【发布时间】:2018-06-23 06:06:11
【问题描述】:

我正在关注Marina Mele 的 Django 教程,我相信它非常好,但自 2016 年上次更新以来有点过时了。我现在正在尝试 Selenium 测试并遇到了我可以通过 Selenium 发送我的电子邮件地址但不能发送密码的问题。我的代码是

    self.get_element_by_id("identifierId").send_keys(credentials["Email"])
    self.get_button_by_id("identifierNext").click()

    self.get_element_by_tag('input').send_keys(credentials["Passwd"])
    self.get_button_by_id("passwordNext").click()

这些函数被定义为:

 def get_element_by_id(self, element_id):
    return self.browser.wait.until(EC.presence_of_element_located(
            (By.ID, element_id)))

def get_element_by_tag(self, element_tag):
    return self.browser.wait.until(EC.presence_of_element_located(
            (By.TAG_NAME, element_tag)))

def get_button_by_id(self, element_id):
    return self.browser.wait.until(EC.element_to_be_clickable(
            (By.ID, element_id)))

我读到的关于这个问题的大多数建议都围绕着等待元素出现。但是,这些功能涵盖了这一点。我正在使用 by_tag,因为当前版本的 Google 身份验证使用的密码字段输入没有 ID,而是具有“passwordIdentifier”-id 的 div 的 div/div/div 子项。我也尝试过使用 Xpath,但似乎这并没有什么不同。

此外,Selenium 似乎能够找到元素……至少当我使用打印命令进行检查时。因此,定位元素似乎不是问题。但是,当我查看 Firefox 浏览器中发生的情况时,Selenium 无法发送我所看到的密钥,而 Selenium 正在测试。可能是什么问题?为什么 Selenium 难以将密码密钥发送到身份验证表单?

提前感谢大家!

【问题讨论】:

标签: javascript html python-3.x selenium google-authentication


【解决方案1】:

当您在 google 注册页面上搜索输入时,您会找到 8 个 WebElement。我认为这是您问题的根源。

我会在名称上使用另一个本地化器,例如 xpath = //input[@name='password'] 或 By,而不是标签名称,如下所示:

def get_element_by_name(self, element_tag):
    return self.browser.wait.until(EC.presence_of_element_located(
        (By.NAME, element_tag)))

和:

self.get_element_by_id("identifierId").send_keys(credentials["Email"])
self.get_button_by_id("identifierNext").click()

self.get_element_by_name('password').send_keys(credentials["Passwd"])
self.get_button_by_id("passwordNext").click()

【讨论】:

  • 嗨,内森,很抱歉我的回复晚了,感谢您的帮助。不幸的是,无论我使用 XPath 还是使用名称的方式,问题仍然存在。奇怪的是,当我只使用“self.get_element_by_name('password')”部分并通过打印检查它时,它会找到一个元素。但是,一旦我添加了 send_keys,它几乎会在 GoogleAuth 界面出现时立即崩溃。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
  • 1970-01-01
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
相关资源
最近更新 更多