Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 量角器:如何在单击按钮前后比较同一web元素的文本内容_Javascript_Angularjs_Jasmine_Protractor - Fatal编程技术网

Javascript 量角器:如何在单击按钮前后比较同一web元素的文本内容

Javascript 量角器:如何在单击按钮前后比较同一web元素的文本内容,javascript,angularjs,jasmine,protractor,Javascript,Angularjs,Jasmine,Protractor,我想在我的angularJS应用程序中测试一个过滤功能。 事实上,当我点击过滤器时,页面上显示的搜索结果数量应该会减少 以下是我目前的代码: element(by.id('foundNumber')).getText().then (function(text){console.log(text); }) element(by.repeater('term in facets.uproctype').row(0)).click () element(by.id('foun

我想在我的angularJS应用程序中测试一个过滤功能。 事实上,当我点击过滤器时,页面上显示的搜索结果数量应该会减少 以下是我目前的代码:

    element(by.id('foundNumber')).getText().then (function(text){console.log(text); })
    element(by.repeater('term in facets.uproctype').row(0)).click ()
    element(by.id('foundNumber')).getText().then (function(text){console.log(text); })
这是我的控制台日志:

Using the selenium server at http://localhost:4444/wd/hub
6209
6195
.... 
我不知道如何在一个expect行中比较这两个值,因为我不能在它们的函数中使用它们。 有什么帮助吗

谢谢
Zied

我相信您必须嵌套then函数,以确保原始值可用

element(by.id('foundNumber')).getText().then( function(original_text) {

  element(by.repeater('term in facets.uproctype').row(0)).click ();

  element(by.id('foundNumber')).getText().then( function(new_text){
    expect(original_text).not.toBe(new_text);
  });

});
这个链接也可能有帮助。

另一种方法是在量角器控制流中安排比较,以便在所有值可用后执行比较

var oldValue,newValue;
element(by.id('foundNumber')).getText().then(function(text){oldValue=text})
element(by.repeater('term in facets.uproctype').row(0)).click()
element(by.id('foundNumber')).getText().then(function(text){newValue=text})

protractor.promise.controlFlow()
  .execute(function(){return protractor.promise.fulfilled()},'wait for control flow')
    .then(function(){
      expect(oldValue).not.toEqual(newValue);
    });

这篇文章对flow.execute()进行了很好的解释。

我想您可以使用
expect
从不同的角度比较
.getText()
的结果

var text1 = element(by.id('foundNumber')).getText();
element(by.repeater('term in facets.uproctype').row(0)).click();
var text2 = element(by.id('foundNumber')).getText();
expect(text1).not.toBe(text2);

expect
处理传递给它的承诺的展开,并实际比较已解析的值。

您是否尝试在
中分配变量,然后在第二个中分配变量:
oldValue=text
newValue=text
?是的,但它不起作用,因为我无法访问函数外部的oldValue和newValue然而,我希望稍后在expect行中比较这些值。即使您在上面的
说明
it
中声明它们,并在
中分配它们,那么
?是的,它将返回未定义的值,我想这是因为它是异步的。不确定,因为我对JS还很陌生