【问题标题】:Browser.wait() in protractor for a specific id , when class changes当类更改时,量角器中的 Browser.wait() 用于特定 id
【发布时间】:2017-04-26 11:12:41
【问题描述】:

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

Scenario -> 点击过滤器 div ,隐藏的 div 出现。需要等到可见

点击前 -

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

点击后 -

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

有什么方法可以让 browser.wait 在 id 上,直到特定的类选择器可见。

我正在使用

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

这是对的吗? 如果我先通过 ID 找到 dom 元素,然后再找到类,我会很高兴element('GenericFilter').by.css('panel-collapse collapse in') etc.

注意:- 我对网络技术很陌生,所以如果这是一个愚蠢的问题,请忽略,我还在学习。

提前致谢

【问题讨论】:

    标签: javascript angularjs protractor


    【解决方案1】:

    链功能不适用于同一元素。它旨在获得 父子元素。例如 div1 有另一个类名为 div2 的 div。对于这种情况,我们可以使用链函数 ->> browser.element(by.id('div1)).element(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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      • 2020-07-03
      • 1970-01-01
      • 1970-01-01
      • 2023-01-01
      • 1970-01-01
      相关资源
      最近更新 更多