Selenium,试图找到一个元素[Python]

时间:2016-10-27 00:15:18

标签: python selenium

我正在尝试使用Selenium模块在​​我的大学邮件中输入用户名和密码。这是我想要找到的id的属性值:

<input id="ContentPlaceHolder1_UsernameTextBox" name="username" tabindex="1" placeholder="FAU Net ID" value="" autocomplete="false" type="text">

以下是我试图在我的程序中找到它的方法:

userElem = browser.find_element_by_id('ContentPlaceHolder1_UsernameTextBox')

但这是我遇到的错误:

例外 - :

Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    emailElem = browser.find_element_by_id('ContentPlaceHolder1_UsernameTextBox')
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 269, in find_element_by_id
    return self.find_element(by=By.ID, value=id_)
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 752, in find_element
    'value': value})['value']
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 236, in execute
    self.error_handler.check_response(response)

  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 192, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id="ContentPlaceHolder1_UsernameTextBox"]

谢谢,非常感谢任何帮助。

编辑:

供参考,这是页面

Link

1 个答案:

答案 0 :(得分:2)

如果Selenium告诉你它找不到元素,那么它就不存在了。通常有几个可能的原因:

  1. 你做了一些愚蠢的事情,比如错误输入元素名称。你确定这是正确的元素ID吗?
  2. 您不在您认为的页面上。你确定你在正确的页面上吗?您是否看过browser.page_source仔细检查?
  3. 页面加载时元素不存在,但稍后通过Javascript添加到页面中,可能是在设置的时间延迟之后或某些事件发生时,例如鼠标单击。页面是否有这样的javascript?