2

分度器を使用してページの非表示のラジオ ボタンを押す際に問題が発生しています。以下に、フローが次のように機能する単一のテストを示します。

  1. ページもナビゲートされ、ラジオ ボタンが存在することを確認します。(以下の存在を確認する2つの方法、両方とも機能します)

  2. さまざまな方法でボタンをクリックしてみてください。コメントアウトされたすべての方法は、以下の実際の方法と同様に、テストでエラーになりませんが、ラジオボタンも「クリック」しません。ボタンがクリックされたときに表示されるフォームが実際に表示されるかどうかを確認する下部の 3 つの期待と、それらが毎回 false になっているため、これを確認できます。

以下に、このコードが見ているサンプル html も示します。それが可能かどうかはわかりませんが、どんな助けも素晴らしいでしょう。事前に助けてくれてありがとう

       it('Should press one of the radio buttons and have the form pop up', function() {

    // Make sure that the value equals bank is found (This passing its test)
    expect(element.all(by.model('bankConnection.bank')).get(0).getAttribute('ng-value')).toEqual('bank');

    // Another way to make sure that the element is found (This is passing the test)
    // expect(element.all(by.css('[ng-value="bank"]')).get(0).getAttribute('ng-value')).toEqual('bank');

    // browser.driver.executeScript("return arguments[0].click();", element.all(by.css('[ng-value="bank"]')).get(0).getAttribute('ng-value').getWebElement());
    //   browser.driver.executeScript("return arguments[0].click();", element.all(by.model('bankConnection.bank')).get(0).getAttribute('ng-value').getWebElement());

    // #1 Way THIS WAY WORKS BUT DOESNT PRESS ANYTHING
    //  var input = element.all(by.model('bankConnection.bank')).get(0);

    // browser.driver.executeScript('angular.element(arguments[0]).triggerHandler("touchstart");', input.getWebElement());

    // #2 Way THIS WAY WORKS BUT DOESNT PRESS ANYTHING
    var input = element.all(by.model('bankConnection.bank')).get(0).getAttribute('ng-value');

    browser.driver.executeScript('angular.element(arguments[0]).triggerHandler("touchstart");', input.getWebElement());

    // To verify button was pressed. 2 seconds
    browser.driver.sleep(2000);

    // Make sure that the form pops up (IT IS CURRENTLY NOT SHOWING UP)
    expect(element(by.model('bankConnect.username')).isPresent()).toBe(true);
    expect(element(by.model('bankConnect.password')).isPresent()).toBe(true);

    // Once click is figured out this should flow through properly BOA CLICK
    expect(bank_page.idText).toEqual('Online ID');

    });

ラジオ ボタン要素

<div class="col" ng-repeat="bank in firstBanks">
  <div style="font-size: 2em; ">
   <label class="bank_radio">
     <input type="radio" ng-model="bankConnection.bank" ng-value="bank" class="ng-valid ng-dirty" value="[object Object]">
     <img ng-src="img/banks/bofa.png" src="img/banks/bofa.png">
   </label>
  </div>
 </div>

要素をポップアップするフォーム

<div class="list card" style="margin-bottom: 0;margin-top:0;" ng-show="bankConnection.bank != null ">
 <div class-="list">

 <label class="item item-input">
  <span class="input-label ng-binding">Online ID</span>
   <input type="text" ng-model="bankConnection.username" class="ng-pristine ng-valid">
 </label>
 <label class="item item-input">
 <span class="input-label ng-binding">Password</span>
  <input type="password" ng-model="bankConnection.password" class="ng-pristine ng-valid" autocomplete="off" style="cursor: auto; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QsPDhss3LcOZQAAAU5JREFUOMvdkzFLA0EQhd/bO7iIYmklaCUopLAQA6KNaawt9BeIgnUwLHPJRchfEBR7CyGWgiDY2SlIQBT/gDaCoGDudiy8SLwkBiwz1c7y+GZ25i0wnFEqlSZFZKGdi8iiiOR7aU32QkR2c7ncPcljAARAkgckb8IwrGf1fg/oJ8lRAHkR2VDVmOQ8AKjqY1bMHgCGYXhFchnAg6omJGcBXEZRtNoXYK2dMsaMt1qtD9/3p40x5yS9tHICYF1Vn0mOxXH8Uq/Xb389wff9PQDbQRB0t/QNOiPZ1h4B2MoO0fxnYz8dOOcOVbWhqq8kJzzPa3RAXZIkawCenHMjJN/+GiIqlcoFgKKq3pEMAMwAuCa5VK1W3SAfbAIopum+cy5KzwXn3M5AI6XVYlVt1mq1U8/zTlS1CeC9j2+6o1wuz1lrVzpWXLDWTg3pz/0CQnd2Jos49xUAAAAASUVORK5CYII=); background-attachment: scroll; background-position: 100% 50%; background-repeat: no-repeat;">
</label>

 </div>
</div>
4

1 に答える 1

1

最終的に私の問題を解決できたのは次のとおりです。提供:分度器の隠し要素をクリックする方法は?

このブロックをコードに追加して、画像の領域にカーソルを合わせ、クリック コマンドを発行しました。

// Move mouse over the button
browser.driver.actions().mouseMove(element(by.css('[ng-src="img/banks/bofa.png"]'))).perform();

    element.all(by.css('[ng-src="img/banks/bofa.png"]')).then(function (elm) {

        elm[0].click();
    });

お手伝いありがとう!

于 2015-01-28T18:54:58.467 に答える