2016-03-21 28 views
1

aşağıda kodpiton selenyum selenium.common.exceptions.StaleElementReferenceException hatası

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() 

var Ama aşağıdaki hatayı

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) 

sorun nedir Herhangi fikirler var mı?

cevap

2

Parola alanına yazdığınızda DOM oluşturulur. Taşınmaya ihtiyacınız var

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

Bazen, bir öğe üzerinde herhangi bir işlem gerçekleştirdiğinizde, sınıf, değer vb. Gibi bazı öznitelikler değiştiğinde ve buna daha fazla erişemezsiniz.

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

Örnek: şifre alanını incelemek zaman, sayfasında apple.com günlüğüne git Bu mücadele

kolay yolu örneği, yine bu eleman tanımlamak ve bunu kullanmak. Bu alana yazdığınızda,'dan password focused'a ve bu alana yazdığınızda password focused edited'a kadarki sınıf değişikliklerini göreceksiniz.