2017-02-11 15 views
1

jqxグリッドの[すべて選択]ボタンが選択されているかどうかを確認するテストを作成しようとしています。分度器でチェックボックスが選択されているかどうかをテストできません

describe('should check jq widgets', function() { 

it('should check if checkbox is checked or not', function() { 
    browser.ignoreSynchronization = true; 
    browser.get('http://www.jqwidgets.com/jquery-widgets-demo/demos/jqxgrid/checkboxselection.htm?arctic'); 
    browser.wait(protractor.ExpectedConditions.visibilityOf($('#contenttablejqxgrid')),50000); 
    $("#columntablejqxgrid>div>div>div").click(); 
     expect($("#columntablejqxgrid>div>div>div").isSelected()).toEqual(true); 
    }); 
}); 

マイjq.conf.jsを::

exports.config = { 
    directConnect: true, 
    framework: 'jasmine', 
    specs: ['jq.spec.js'], 

    jasmineNodeOpts: { 
     showColors: true, 
     defaultTimeOutInterval: 3000000 
    }, 
} 
でもchechbox私のテストが偽として実態を与えている

これは私が私のjq.spec.jsに書いたダミーテストコードですが選択される。

Failures: 
1) should check jq widgets should check if checkbox is checked or not 
    Message: 
    Expected false to equal true. 
    Stack: 
    Error: Failed expectation 

私のロケータを複数回変更して、ロケータが使用されているかどうかを確認しました(異なるchild div、spanを使用)。

+0

チェックボックスが実際にチェックされているかどうかを確認できますか? – jdgower

+1

あなたのセレクタが 'div'を見つけている場合、このdiv - expect($( "#columntablejqxgrid> div> div> div")内にある場合、チェックボックスを見つける必要があります。isSelected())... – Grasshopper

+0

@jdgower:はい、私はいくつかのブラウザに入れました。それはチェックされていることを確認してください。 – Ravi

答えて

4

これは標準チェックボックスではないので、で状態チェックを処理する必要があります。ウェイです。このサンプルテストは私のために動作します...

describe('should check jq widgets', function() { 

    it('should check if checkbox is checked or not', function() { 
     var firstCheckbox = $$('.jqx-checkbox-default').first(); 

     browser.get('http://www.jqwidgets.com/jquery-widgets-demo/demos/jqxgrid/checkboxselection.htm?arctic'); 
     browser.wait(protractor.ExpectedConditions.visibilityOf($('#contenttablejqxgrid')),5000, 'grid did not display'); 
     firstCheckbox.click(); 

     expect(isChecked(firstCheckbox)).toBe(true); 
    }); 
}); 

var isChecked = function(element) { 
    return element.$('.jqx-checkbox-check-checked').isPresent().then(function(checked) { 
     return checked; 
    }); 
}; 
+0

こんにちはブライン、私は話しながらこれを行っていますが、 '非同期コールバックがjasmine.DEFAULT_TIMEOUT_INTERVALで指定されたタイムアウト時間内に呼び出されていません。私はこれらを過去に研究しましたが、これらを避けるための具体的な方法は見つかりませんでした。私はすでにconfを使用してジャスミンタイムアウトに非常に高い値を設定しています。ここにある洞察はあなたが持っているかもしれませんか? – Ravi

+0

Hey Ravi、私は実際のテストの例で私の答えを更新しました。 – Brine

+0

ありがとう!私は同様の行に何かを書きましたが、あなたのことを今試しています。私は接続の問題を抱えているようです。 – Ravi

関連する問題