2016-11-30 98 views
0

目前萬畝的情況是這樣:獲取刷新頁面後get_attribute(「值」)

  1. 發送send_keys到現場
  2. 單擊「保存」按鈕(刷新點擊後的頁面)
  3. 得到get_attribute("value")刷新後的頁面

我的代碼:

def fill_twitter(self): 

     enter_twitter = "http://" + fake.text(max_nb_chars=13) + ".com" 

     twitter_field = self.find_element(*ContractorsLocators.TWITTER) 
     twitter_field.send_keys(enter_twitter) 

     self.find_element(*ContractorsLocators.SAVE_BUTTON).click() 
     time.sleep(4) 

     assert twitter_field.get_attribute("value") == enter_twitter 

我的錯誤:

StaleElementReferenceException: Message: stale element reference: element is not attached to the page document 

我怎樣才能獲得get_attribute("value")

+0

你需要再次找到相同的元素來獲取他們的值爲'self.find_element(* ContractorsLocators.TWITTER).get_attribute(「value」)'.. –

回答

2

StaleElementReferenceException: Message: stale element reference: element is not attached to the page document

這樣做的most frequent cause是頁面,所述要素是已被刷新的一部分,或者用戶已經導航遠到另一頁。

正如你所說的,點擊保存按鈕時頁面正在刷新。因此,要避免這種情況,你需要找到相同的元素(刷新元素)再次如下得到他們的價值: -

assert self.find_element(*ContractorsLocators.TWITTER).get_attribute("value") == enter_twitter 
0

由於頁面得到刷新,你最好保存屬性值的元素獲得Stale.

def fill_twitter(self): 

    enter_twitter = "http://" + fake.text(max_nb_chars=13) + ".com" 

    twitter_field = self.find_element(*ContractorsLocators.TWITTER) 
    twitter_field.send_keys(enter_twitter) 
    value = twitter_field.get_attribute("value") 

    self.find_element(*ContractorsLocators.SAVE_BUTTON).click() 
    time.sleep(4) 

    assert value == enter_twitter 
0

要在刷新頁面後檢查元素是否可見,請使用顯式sleep()函數,4秒鐘後檢查該組件是否可見或使用WebDriverWait

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "myDynamicElement")); 

訪問http://selenium-python.readthedocs.io/waits.html#explicit-waits以便更好地理解。