2015-05-10 3 views
2

Я пытаюсь войти в Zoho Mail. Но я получаю сообщение об ошибке, которое я не могу понять. Мой код выглядит следующим образом:Ошибка при попытке входа в систему с помощью Selenium webdriver

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 protected]") 
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/[email protected]/components/driver-component.js:10271) 
    at FirefoxDriver.prototype.findElement (file:///C:/Users/PC/AppData/Local/Temp/tmpdgppxbxp/extensions/[email protected]/components/driver-component.js:10280) 
    at DelayedCommand.prototype.executeInternal_/h (file:///C:/Users/PC/AppData/Local/Temp/tmpdgppxbxp/extensions/[email protected]/components/command-processor.js:12274) 
    at DelayedCommand.prototype.executeInternal_ (file:///C:/Users/PC/AppData/Local/Temp/tmpdgppxbxp/extensions/[email protected]/components/command-processor.js:12279) 
    at DelayedCommand.prototype.execute/< (file:///C:/Users/PC/AppData/Local/Temp/tmpdgppxbxp/extensions/[email protected]/components/command-processor.js:12221) 

ответ

1

элемент, который вам нужно, это в 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) 
... 
+0

Отлично! Это сработало. Juste - краткая заметка для читателей. Это должно быть: ** iframe ** = driver.find_element_by_id ("zohoiam") not ** frame ** = driver.find_element_by_id ("zohoiam") – Igor

Смежные вопросы