我找到了为AngularJS Web应用程序制作的Protractor框架.
如何在不使用AngularJS的网站上使用Protractor?
我写了第一个测试,Protractor触发了这条消息:
Error: Angular could not be found on the page https://www.stratexapp.com/ : retries looking for angular exceeded
Run Code Online (Sandbox Code Playgroud) 在测试规范中,我需要单击网页上的按钮,然后等待新页面完全加载.
emailEl.sendKeys('jack');
passwordEl.sendKeys('123pwd');
btnLoginEl.click();
// ...Here need to wait for page complete... How?
ptor.waitForAngular();
expect(ptor.getCurrentUrl()).toEqual(url + 'abc#/efg');
Run Code Online (Sandbox Code Playgroud) 我已经看过很多次人们建议使用它:
browser.ignoreSynchronization=true; // or false
Run Code Online (Sandbox Code Playgroud)
但我不明白我们为什么需要它?
我试过这个:
browser.actions().keyDown(protractor.Key.ENTER).keyUp(protractor.Key.Enter).perform();
Run Code Online (Sandbox Code Playgroud)
这给出了错误:
Error: Not a modifier key
Run Code Online (Sandbox Code Playgroud) 我有一个元素定义为
this.clientRowName = element(by.id('CLIENT_NAME')); //page object file
Run Code Online (Sandbox Code Playgroud)
我想读取这个元素中的文本,它是"ABC"但是在做:var client = page.clientRowName.getText();
返回一个对象而不是一个字符串.有没有其他方法可以获取元素的文本
我正在使用Protractor执行一些端到端测试,我想通过命令行传入登录凭据,而不是将它们存储在spec文件中.我发现有人使用了一个帖子process.argv.forEach
,但是如何存储这些值并在另一个spec文件中使用它们?我有一个文件login-spec.js
,我想使用命令行参数.
谢谢!
有没有办法在Jasmine expect()
失败时打印自定义错误消息?
作为一个例子,对于端到端测试我有一个网页数组,我使用一个测试来转到每个URL并断言每个页面上存在一个元素.我知道我可以把每个人都expect()
放到一个单独的测试中,但我宁愿遍历数组并在失败时记录页面URL.
我有一个包含这样一个文件的Protractor项目:
var FriendCard = function (card) {
var webElement = card;
var menuButton;
var serialNumber;
this.getAsWebElement = function () {
return webElement;
};
this.clickMenuButton = function () {
menuButton.click();
};
this.setSerialNumber = function (numberOfElements) {
serialNumber = numberOfElements + 1;
menuButton = element(by.xpath('.//*[@id=\'mCSB_2_container\']/li[' + serialNumber + ']/ng-include/div/div[2]/i'));
};
this.deleteFriend = function () {
element(by.css('[ng-click="deleteFriend(person);"]')).click();
element(by.css('[ng-click="confirm()"]')).click();
}
};
module.exports = FriendCard;
Run Code Online (Sandbox Code Playgroud)
该文件的路径是
./pages/FriendCard.js
我没有问题,使用require()方法导入到另一个文件:
var FriendCard = require('./../pages/FriendCard');
Run Code Online (Sandbox Code Playgroud)
所以,我决定将这个文件导入到TypeScript文件中:
import {FriendCard} from './../pages/FriendCard'
Run Code Online (Sandbox Code Playgroud)
我正在使用WebStorm,所以它告诉我,(TS2305)它没有导出成员'FriendCard'.
也许我必须以某种方式配置tsconfig.json文件,但我仍然不知道它是如何工作的.你可以帮帮我吗?
我想在量角器测试中输出div的文本,到目前为止我有:
console.log(ptor.findElement(protractor.By.id('view-container')).getText());
Run Code Online (Sandbox Code Playgroud)
但是这个输出
[object Object]
Run Code Online (Sandbox Code Playgroud)
我尝试了"toString()"和相同的结果.
有没有办法将文本输出到控制台?
有没有办法慢慢使用量角器编写Angular E2E测试,以便我可以观察到发生了什么?
protractor ×10
javascript ×7
angularjs ×5
testing ×5
jasmine ×2
asp.net ×1
e2e-testing ×1
end-to-end ×1
selenium ×1
typescript ×1
wait ×1
webdriver ×1
webstorm ×1