等待元素启用protratcor

时间:2016-10-21 19:41:08

标签: selenium protractor

同样,这个问题可能很容易或已被问过,但我无法找到任何答案。我得到的只是检查元素是否可点击,但这对我不起作用。 是否有任何简单的解决方案等待元素,直到它被启用。我的应用程序中有一组下拉列表,只有在上一个下拉列表中选择了值时,才能选择其他下拉列表。 我试过下面的代码,但它没有用。

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>

在我的第一个下拉列表中选择值后,disabled =“disabled”属性会从下拉列表中消失。 我可以等待浏览器,直到它被启用或禁用属性不再?

1 个答案:

答案 0 :(得分: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 
相关问题