类更改时,在量角器中的Browser.wait()用于特定的id

时间:2017-04-25 23:54:47

标签: javascript angularjs protractor

需要为特定元素实现browser.wait()。需要一些帮助才能完成这项工作。

场景 - >单击过滤器div时,将显示隐藏的div。需要等到它可见

点击之前 -

<div id = "collapseGenericFilter" class="pannel-collapse collapse">

点击后 -

<div id="collapseGenericFilter" class="pannel-collapse collapse in"> 

是否有任何方法可以在id上使用browser.wait,直到特定的类选择器可见。

我正在使用

解决这个问题
browser.wait(() => element(by.css('.panel-collapse.collapse.in')).isPresent(),
500,
'long wait');

这是对的吗? 如果我首先通过ID找到dom元素然后在课堂上发布类似element('GenericFilter').by.css('panel-collapse collapse in') etc.

的内容,我会很高兴

注意: - 我对网络技术非常陌生,如果这是一个愚蠢的问题,我会好好地忽略,我还在学习。

提前致谢

1 个答案:

答案 0 :(得分:1)

  

链功能对同一元素不起作用。它旨在获得   父子元素。例如, div1有另一个div,类名为div2 。对于这种情况,我们可以使用链函数 - &gt;&gt; browser.element(by.id( 'DIV1))。元素(by.css('。DIV2' ))

对于您的解决方案,我们可以先通过ID检查元素,然后检查其类属性

    //first click on element  
    var genericFilter = browser.element(by.id('collapseGenericFilter')); 
    genericFilter.click(); 
    //It will wait for generic filter until it has exact class name 
    browser.driver.wait(function(){
         genericFilter.getAttribute('class').then(function(className){
                return className.indexOf('pannel-collapse collapse in') !== -1;
              },50000, 'Element not present ');
     },50000);