2016-10-21 89 views
0

同樣,這個問題可能很容易或已經問過,但我無法找到任何答案。我得到的只是檢查元素是否可點擊,但不適合我。 是否有任何簡單的解決方案來等待元素,直到它被啓用。我在我的應用程序中設置了下拉列表,其他下拉列表只有在上一個下拉列表中選擇了值時纔可以選擇。 我試過下面的代碼,但它不工作。等待元素啓用protratcor

var element = element(by.css('[id*="uxSeries"] select')); 
browser.wait(protractor.ExpectedConditions.elementToBeClickable(element), 10000); 

錯誤消息我得到:

失敗:陳舊的元素參考:元素沒有被附加到頁面 文件

HTML的下拉得到啓用後方可:

<select name="GalleryControl$uxSeries" onchange="OnChangeScript" id="uxSeries" disabled="disabled" style="width:215px;"> 
     <option selected="selected" value="">All Series</option> 
     <option value="Value1">Option1</option> 
     <option value="Value2">Option2</option> 
     <option value="Value3">Option3</option> 
     <option value="Value4">Option4</option> 
     <option value="Value5">Option5</option> 
    </select> 

後,我選擇在我的第一個博士值opdown,disabled =「disabled」屬性遠離下拉菜單。 我可以等瀏覽器啓用或禁用屬性不再?

+0

什麼'element'的選擇是在你的例子? –

+0

@FlorentB。我通過ID選擇元素。 – NewWorld

+0

我認爲嘗試過的定位器是不正確的,你爲什麼不嘗試作爲'element(by.css(「select#uxSeries」));''或'element(by.id(「uxSeries」));'? –

回答

0

失敗:陳舊的元素參考:元素沒有被附加到頁面文件發生因元素的變化

這個例外,因爲你說我已在我的應用程序和其他下拉菜單的只有在以前的下拉列表中選擇值下拉得到可選意味着,當它變得啓用,它改變了自己的立場或一些屬性值可以是disabled屬性成爲變革,這就是爲什麼你就麻煩了。

你應該首先嚐試要等到這個元素成爲使用protractor.ExpectedConditions.stalenessOf()禁用狀態失效,然後再次找到這個元素,當它在如下使能狀態: -

var EC = protractor.ExpectedConditions; 

#find disabled select element first 
var disabledSelect = element(by.css("select#uxSeries[disabled='disabled']")); 

#now wait until this becomes stale from disabled state 
browser.wait(EC.stalenessOf(disabledSelect), 10000); 

#now find enabled select element 
var enabledSelect = element(by.css("select#uxSeries")); 

#now do your further steps 
+0

不適用於我。不過同樣的錯誤,說明'失敗:無效元素狀態 (會話信息:鉻= 54.0.2840.71)' – NewWorld