在跨度内选择动态数字

时间:2016-11-14 23:55:06

标签: javascript jquery angularjs selenium protractor

我正在使用带有selenium和量角器的自动化框架,用JavaScript编码。但是,应用程序的这一部分是在没有Angular的情况下完成的。我有一个带有加号和减号按钮的数量字段来增加数量。我需要为我的测试选择数字本身。

这是DOM,数字为“2”

<div class="modify-product padding-lg-top hide-on-review">
 <b data-lang-key="store.qty">Qty:</b>
 <span class="modify-action">
  <span class="remove">-</span>
  <span class="product-quantity">2</span>
  <span class="add">+</span>
 </span>
</div>

如果我在控制台中使用JQuery,我可以选择带有以下内容的2:

$('.cart-product .product-quantity').text()

现在在selenium中,我正在尝试使用以下选择器:

return element(by.css('.cart-product .product-quantity').text())

到目前为止,这是不成功的。我也尝试过.val()和其他一些方法,但我尝试的所有方法都会返回整个span元素,或者返回undefined。

思想?

3 个答案:

答案 0 :(得分:0)

请参阅以下链接。

Link 1

Link 2

重要 - 切勿在这种情况下使用xpath

答案 1 :(得分:0)

return element(by.className('product-quantity')).getText();

记住getText()返回一个promise.So你必须使用then()来获取值

答案 2 :(得分:0)

请记住,量角器方法总是返回promises,因为它们是异步操作。您的测试应如下所示:

                /* Make the images wide and responsive. */
            #myCarousel img {
              height: auto;
              max-width: 100%;
              width: 100%;
            }

            /* Change the order of the indicators. 
               Return them to the center of the slide. */
            .carousel-indicators {
              width: auto;
              margin-left: 0;
              transform: translateX(-50%);
            }
            .carousel-indicators li {
              float: right;
              margin: 1px 4px;
            }
            .carousel-indicators .active {
              margin: 0 3px;
            }

            /* Change the direction of the transition. */
            @media all and (transform-3d), (-webkit-transform-3d) {
              .carousel-inner > .item.next,
              .carousel-inner > .item.active.right {
                left: 0;
                -webkit-transform: translate3d(-100%, 0, 0);
                transform: translate3d(-100%, 0, 0);
              }
              .carousel-inner > .item.prev,
              .carousel-inner > .item.active.left {
                left: 0;
                -webkit-transform: translate3d(100%, 0, 0);
                transform: translate3d(100%, 0, 0);
              }
            }