2016-11-14 67 views
0

我正在使用一个带有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() 

现在的硒,我正尝试使用以下选择器:

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

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

想法?

+0

我仍然得到错误类型错误:元素(...)文本不是一个函数 – MikeyH

+1

其not'text'。你需要使用'getText()'。 –

+1

无论获取文本的方法是什么,都不应该在元素对象上调用?而不是像目前使用的那样。找到元素,然后得到类似元素的文本(by.css('css_selector'))。getText() – lauda

回答

0

请参阅以下链接。

Link 1

Link 2

重要 - 不要使用XPath对于这种场景

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

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

0

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

let quantities = element.all(by.css('.product-quantity')); 
quantities.get(0).then(function(el) { 
    expect(el.getText()).to.become('2'); 
});