2017-06-06 35 views
0

我想测试如果我的输入字段正确计算学分。量角器cssContainingText与函数作为参数

这个测试应该选择一个1-100(积分)之间的随机数,然后乘以5($)并显示一个总价格。

function randomZip() { 
 
    return Math.floor(Math.random() * 100); 
 
} 
 
var creditQuantity = randomZip(); 
 

 
function creditQuantityMultiplied() { 
 
    creditQuantity * 5; 
 
    return; 
 
}; 
 

 
element(by.css("a[href='/credits']")).click(); 
 
element(by.css('input[name="count"]')).sendKeys(creditQuantity); 
 
$('.text_per').click(); 
 
browser.sleep(1500); 
 

 
var checkSumCredits = element(by.cssContainingText('.inline-block.price_credit.text_per', creditQuantityMultiplied())); 
 

 
expect(checkSumCredits.isPresent()).toBeTruthy();
<div class="credits-block" id="creditsBuyForm"> 
 
    <h2>Buy Credits</h2> 
 
    <div class="credits"> 
 
    <div class="block"> 
 
     <span class="text_per">Amount</span> 
 
     <input type="text" name="count" value="25" class="text_per"> 
 
     <span class="text_per">x</span> 
 
     <div class="inline-block price_credit">$5.00</div> 
 
     <span class="text_per">per credit</span> </div> 
 
    <div class="block"> 
 
     <span class="text_per">Total</span> 
 
     <div class="inline-block price_credit text_per"> 
 
     <img width="32" height="32" src="/app-static/css/img/coins_2.png" class="inline-block"> $125.00</div> 
 
     <div class="inline-block"> 
 
     <form action="/cart/index.php" method="post" id="remoteadd" class="trackable-init"> 
 
      <input type="hidden" name="app" value="ecom"> <input type="hidden" name="ns" value="addcart"> 
 
      <input type="hidden" name="cart_api" value="Y"> <input type="hidden" name="price" value="5.00"> 
 
      <input type="hidden" name="name" value="Credits ($5.00 per credit)"> 
 
      <input type="hidden" name="quantity" value="25"> 
 
      <input type="hidden" name="number" value="a:3:{s:7:&quot;user_id&quot;;i:7996;s:10:&quot;company_id&quot;;i:1;s:9:&quot;item_type&quot;;i:1;}"> 
 
      <input type="hidden" name="delivery_method" value="N"> 
 
      <input type="hidden" name="SUBMIT" value="SUBMIT"> 
 
      <input type="hidden" name="taxcountry" value="STANDARD"> 
 
      <input type="hidden" name="taxstateprov" value="STANDARD"> <input type="hidden" name="taxclass" value="DIGITAL"> 
 
      <button type="submit" class="def-ui-button-buy ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-primary" role="button"> 
 
      <span class="ui-button-icon-primary ui-icon ui-icon-cart"></span> 
 
      <span class="ui-button-text">Buy</span> 
 
      </button> 
 
     </form> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

我越来越虚假的预期,当我运行这段代码是truthy,我不知道,如果问题是cssContainingText需要2个字符串指定参数和即时消息传递1串1点的​​整数或者是其他东西。

+0

这两个参数必须是'string'类型。 http://www.protractortest.org/#/api?view=ProtractorBy.prototype.cssContainingText – Gunderson

+0

var creditQuantity = randomZip(); \t \t var creditQuantityMultiplied = creditQuantity * 5; \t \t function creditQuantityToStr(){ \t \t \t creditQuantityMultiplied.toString(); \t \t \t \t \t}; \t \t元件(by.css( “一个[HREF = '/信用']”))。点击()。然后(函数(){ \t \t \t元件(by.css('输入[名称= “计数”] '))的SendKeys(creditQuantity); \t \t \t $('。text_per')点击(),然后(函数(){ \t \t \t \t browser.sleep(1500); \t \t \t \t var checkSumCredits = element(by.cssContainingText('.inline-block.price_credit.text_per',creditQuantityToStr())); \t \t \t \t expect(checkSumCredits。。isPresent())toBeTruthy(); \t \t \t}); 还在变幻莫测 –

回答

0

当我看着你的代码,我看到下面的情况发生

  1. 您填写element(by.css('input[name="count"]'))creditQuantity,这是随机生成的,例如,它是价值47
  2. 然后,您正在做一个断言与expect(checkSumCredits.isPresent()).toBeTruthy();checkSumCredits是基于这样的事实,如果能找到保存了与creditQuantityMultiplied()

creditQuantityMultiplied()持有在我看来2个误差产生的值的元素:

  1. 它没有返回值,它只有return
  2. 如果您更改creditQuantityMultiplied()也返回一个值,它也将生成一个唯一的值。这永远不会等于之前的随机值47

这就是为什么你不会找到匹配并且会返回false /失败。

希望它有帮助