Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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
Angularjs 如何在量角器中编写检查css类的预期条件?_Angularjs_Selenium Webdriver_Protractor - Fatal编程技术网

Angularjs 如何在量角器中编写检查css类的预期条件?

Angularjs 如何在量角器中编写检查css类的预期条件?,angularjs,selenium-webdriver,protractor,Angularjs,Selenium Webdriver,Protractor,我有一个id为'public1'的按钮。当我单击该元素时,类状态从ng pristine变为ng dirty: <input id="public1" class="tile-checkbox ng-valid ng-dirty> Some Text</input> 我会使用: 类似于以下内容(使用ES6 function.includes()),如果您不想向jasmine添加其他匹配器: let input = $('#public1'); expect(input.

我有一个id为'public1'的按钮。当我单击该元素时,类状态从ng pristine变为ng dirty:

<input id="public1" class="tile-checkbox ng-valid ng-dirty> Some Text</input>
我会使用:

类似于以下内容(使用ES6 function.includes()),如果您不想向jasmine添加其他匹配器:

let input = $('#public1');
expect(input.getAttribute('class').then(classes => classes.includes('ng-pristine') && !classes.includes('ng-dirty')).toBeTruthy('Should have "ng-pristine" class ');
input.click();
expect(input.getAttribute('class').then(classes => !classes.includes('ng-pristine') && classes.includes('ng-dirty')).toBeTruthy('Should have "ng-dirty" class after click');

接下来,如果我想通过文本(没有类或属性)找到一个元素,我该怎么做?@KunalOjha在这种情况下,您可以使用xpath:
元素(by.xpath(//input[normalize space(..='Some text'])
。我得到一个错误,提示“toHaveClass()不是函数”@KunalOjha,它不是内置的匹配器。您必须定义它-请参见答案中的链接线程。谢谢
let input = $('#public1');
expect(input.getAttribute('class').then(classes => classes.includes('ng-pristine') && !classes.includes('ng-dirty')).toBeTruthy('Should have "ng-pristine" class ');
input.click();
expect(input.getAttribute('class').then(classes => !classes.includes('ng-pristine') && classes.includes('ng-dirty')).toBeTruthy('Should have "ng-dirty" class after click');