【问题标题】:Unable to fetch the value of an element in protractor无法获取量角器中元素的值
【发布时间】:2018-10-01 09:03:31
【问题描述】:

对于我的量角器脚本之一。我想获取一个元素的值。

这是 DOM 设置:

<h5 class="ng-binding ng-scope" ng-if="editor.special.stock_number !== ''">
<b>Stock Number:</b>
 72850
</h5>

我想获取 Stock Number:

的值

我尝试使用 getText,但它只是打印出 Stock Number:

this.get_stock_number = () => {
        let stockNumber = stock_number.getText();
        stockNumber.then((text) => {
            console.log("Stock Number is: " + text);
        });
    };

我也尝试过使用 getAttribute 但它返回 null:

this.get_stock_number = () => {
        let stockNumber = stock_number.getAttribute('Stock Number:');
        stockNumber.then((text) => {
            console.log("Stock Number is: " + text);
        });
    };

我真的需要解决这个问题。我有点卡在这里。 任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 我通常会尝试在 console.log 上打印出 DOM 元素以查看其中的内容...在您的情况下为 console.log(stock_number)
  • @amitesh - 你能用代码说明你是如何找到这个元素 stock_number 的吗?
  • @AIqbal 我怎样才能在控制台中打印库存号。你能再解释一下吗
  • @AmitJain 你想让我给你看 xpath 吗??
  • @AmitJain locators.findByXpath("//*[@id='container']//*[contains(text(),'Stock Number:')]");

标签: angularjs protractor ui-automation gettext getattribute


【解决方案1】:

你可以试试:

  • 找到包含整个文本的h5元素并提取它

h5element.getText()

所以它可以返回 Ex:

&lt;b&gt;Stock Number:&lt;/b&gt; 72850

  • 之后,只需使用正则表达式从字符串中提取数字
let text = `<b>dsadsad</b> 320301`;
let numberPattern = /\d+/g;
let results = text.match(numberPattern);
if (results != null) {
    let number = results[0];
    console.log(number);
}

【讨论】:

  • 正则表达式不起作用。我尝试了其他一些正则表达式,但它们也不起作用。
  • 我已经运行了上面提到的示例字符串,结果是数字。你也可以在这里验证正则表达式:regex101.com
猜你喜欢
  • 1970-01-01
  • 2015-11-30
  • 1970-01-01
  • 2013-11-23
  • 2016-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多