2016-03-21 17 views
1

私は以下のコードのpythonセレンselenium.common.exceptions.StaleElementReferenceExceptionエラー

from selenium import webdriver 
from selenium.webdriver.support.ui import WebDriverWait 

driver = webdriver.Firefox() 

driver.get("https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa") 
username = WebDriverWait(driver, 20).until(lambda driver : driver.find_element_by_id('appleId')) 
password = WebDriverWait(driver, 20).until(lambda driver : driver.find_element_by_id('pwd')) 

username.send_keys("xxxxxxxxxx.com") 
password.send_keys("xxxxxxxx") 

password.submit() 

があるが、私は以下のエラー

password.submit() 
File "/Users/.virtualenvs/itunes/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 84, in submit 
    self._execute(Command.SUBMIT_ELEMENT) 
    File "/Users/.virtualenvs/itunes/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 457, in _execute 
    return self._parent.execute(command, params) 
    File "/Users/.virtualenvs/itunes/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 233, in execute 
    self.error_handler.check_response(response) 
    File "/Users/.virtualenvs/itunes/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.StaleElementReferenceException: Message: Element not found in the cache - perhaps the page has changed since it was looked up 
Stacktrace: 
    at fxdriver.cache.getElementAt (resource://fxdriver/modules/web-element-cache.js:9454) 
    at Utils.getElementAt (file:///var/folders/x1/1bwt313j0qvgdh5pfzpbpvcw0000gn/T/tmpR5A61x/extensions/[email protected]/components/command-processor.js:9039) 
    at WebElement.submitElement (file:///var/folders/x1/1bwt313j0qvgdh5pfzpbpvcw0000gn/T/tmpR5A61x/extensions/[email protected]/components/command-processor.js:12156) 
    at DelayedCommand.prototype.executeInternal_/h (file:///var/folders/x1/1bwt313j0qvgdh5pfzpbpvcw0000gn/T/tmpR5A61x/extensions/[email protected]/components/command-processor.js:12661) 
    at fxdriver.Timer.prototype.setTimeout/<.notify (file:///var/folders/x1/1bwt313j0qvgdh5pfzpbpvcw0000gn/T/tmpR5A61x/extensions/[email protected]/components/command-processor.js:625) 

間違って何任意のアイデアを得ましたか。

答えて

2

パスワードフィールドに入力するとDOMが表示されます。あなたはそれを移転する必要があります

password = WebDriverWait(driver, 20).until(lambda driver : driver.find_element_by_class_name('dots')) # class dots is added in the rendering 
password.submit() 
0

ある要素に対して操作を実行すると、クラス、値などの属性の一部が変更され、さらにアクセスできなくなることがあります。

pass = WebDriverWait(driver, 20).until(lambda driver : driver.find_element_by_id('pwd')) 
pass.submit(); 

例: パスワードフィールドを検査する場合、ページでapple.comログに移動し、これを取り組むため

最も簡単な方法は、再び、この要素を識別し、それを使用し、一例です。フィールドをクリックしたときにpasswordからpassword focusedに、そしてそれを入力するとpassword focused editedにクラスが変更されています。