python - 尝试使用 Selenium webdriver 登录时出错

标签 python selenium

我正在尝试登录 Zoho Mail。但是我收到一个错误,我无法弄清楚。我的代码如下所示:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("https://www.zoho.com/mail/login.html")
lid = driver.find_element_by_id("lid")
lid.send_keys("email@email.com")
pwd = driver.find_element_by_id("pwd")
pwd.send_keys("Password")
selenium.find_element_by_name("submit").click()


driver.close()

网站上的HTML元素:

用户名/电子邮箱:

<input name="lid" id="lid" class="input usrbx" value="" onkeypress="clearmsg()" type="email">

密码:

<input name="pwd" id="pwd" class="input passbx" onkeypress="clearmsg()" type="password">

提交按钮:

<button type="submit" id="submit_but" name="submit" class="submit_mobile">Sign In</button>

这是我得到的错误:

Traceback (most recent call last):
  File "C:\Python_coding\Mail_bot.py", line 8, in <module>
    lid = driver.find_element_by_id("lid")
  File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 208, in find_element_by_id
    return self.find_element(by=By.ID, value=id_)
  File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 664, in find_element
    {'using': by, 'value': value})['value']
  File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 175, in execute
    self.error_handler.check_response(response)
  File "C:\Python34\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 166, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"lid"}
Stacktrace:
    at FirefoxDriver.prototype.findElementInternal_ (file:///C:/Users/PC/AppData/Local/Temp/tmpdgppxbxp/extensions/fxdriver@googlecode.com/components/driver-component.js:10271)
    at FirefoxDriver.prototype.findElement (file:///C:/Users/PC/AppData/Local/Temp/tmpdgppxbxp/extensions/fxdriver@googlecode.com/components/driver-component.js:10280)
    at DelayedCommand.prototype.executeInternal_/h (file:///C:/Users/PC/AppData/Local/Temp/tmpdgppxbxp/extensions/fxdriver@googlecode.com/components/command-processor.js:12274)
    at DelayedCommand.prototype.executeInternal_ (file:///C:/Users/PC/AppData/Local/Temp/tmpdgppxbxp/extensions/fxdriver@googlecode.com/components/command-processor.js:12279)
    at DelayedCommand.prototype.execute/< (file:///C:/Users/PC/AppData/Local/Temp/tmpdgppxbxp/extensions/fxdriver@googlecode.com/components/command-processor.js:12221)

最佳答案

您需要的元素位于 iframe 中。要在 iframe 中使用元素,首先您必须更改为该 iframe。

将代码更改为:

...
driver = webdriver.Firefox()
driver.get("https://www.zoho.com/mail/login.html")
iframe = driver.find_element_by_id("zohoiam")
driver.switch_to_frame(iframe)
...

关于python - 尝试使用 Selenium webdriver 登录时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30152663/

相关文章:

python - 在 python 中创建默认列表

python - 我如何处理这种情况 : 'n/a' shows up as 'nan' in pandas dataframe, 但无法对其进行字符串匹配并替换

python - 使用 Dateutil 的相对日期基准

python - selenium.common.exceptions.InvalidSelectorException 与 "span:contains(' 字符串')”

python - 从字符串中获取 python 类对象

python - 如何让 Selenium Web 驱动程序等待元素可访问,而不仅仅是存在?

python - Selenium 错误 : element not visible (different behaviour on two computers)

java - 如何找到包含特定文本的第二张图像

javascript - AngularJS 和 Protractor - 在元素 .isDisplayed() 时执行 .click()

python - 如何在每个对象方法之后获得一个名为(装饰器?)的方法