【发布时间】:2019-10-12 09:18:52
【问题描述】:
我遇到了这个问题,我执行量角器测试却发现它失败了。现在问题不在于实际功能失败,而在于默认超时间隔。代码运行良好,在网页上执行所有操作,当您期望出现绿点时,它就会出错。
在有人将其标记为重复之前,我只想告诉您,我已经尝试了以下方法来解决其他类似问题的答案。
- 在“it”块中包含参数并在测试后调用该参数。
- 将 conf.js 文件中的 default_timeout_interval 更改为 30s。
- 尝试在最后一个函数中使用 Async/await 来等待 promise 得到解决。
我不仅想找到这个问题的答案,而且如果有人能给我解释一下 Protractor 到底想在这里传达什么。对于 JavaScript 和 Protractor 的新手来说,这似乎是一个非常模糊的信息。
以下是我的规范文件:
describe("Validating Booking for JetBlue WebApplication", function(){
var firstPage = require("../PageLogic/jetBlueHomePage.js");
it("Validating One Way Booking", function(pleaserun){
firstPage.OneWayTrip();
firstPage.EnterFromCity("California");
firstPage.EnterToCity("New York");
firstPage.SelectDepartureDate();
firstPage.searchFlights();
pleaserun();
});
});
下面是我的页面文件:
var homePage = function(){
this.OneWayTrip = function(){
element(by.xpath("//label[text()=' One-way ']/parent::jb-radio/div")).click();
}
this.EnterFromCity = function(FromCityName){
element(by.xpath("//input[@placeholder='Where from?']")).clear();
element(by.xpath("//input[@placeholder='Where from?']")).sendKeys(FromCityName);
browser.sleep(3000);
element(by.xpath("//ul[@id='listbox']/li[1]")).click();
}
this.EnterToCity = function(ToCityName){
element(by.xpath("//input[@placeholder='Where to?']")).clear();
element(by.xpath("//input[@placeholder='Where to?']")).sendKeys(ToCityName);
browser.sleep(3000);
element(by.xpath("//ul[@id='listbox']/li[1]")).click();
browser.sleep(3000);
}
this.SelectDepartureDate = function(){
element(by.xpath("//input[@placeholder='Select Date']")).click();
browser.sleep(3000);
element(by.xpath("//span[text()=' 24 ']")).click();
}
this.NumberOfPassengers = function(){
element(by.xpath("//button[@pax='traveler-selector']")).click();
}
this.searchFlights = async function(){
await element(by.buttonText('Search flights')).click();
}
};
module.exports = new homePage();
下面是 Conf.js 文件:
exports.config = {
directConnect: true,
specs:["TestSpecs/jetBlueBookingTest.js"],
onPrepare: function(){
browser.get("https://www.jetblue.com/");
browser.manage().window().maximize();
},
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
isVerbose: true,
includeStackTrace: true,
}
};
寻求所有量角器专业人士的帮助,以帮助我获得这个解决方案,并希望让我理解这个概念。
【问题讨论】:
-
什么是
pleaserun()。更新相同的代码 -
量角器处理承诺的默认方式称为控制流,您当前正在使用它。启用控制流时不应使用
async/await,因为这可能导致意外行为。您能否确认您看到在 30 秒默认超时期限仍在使用时删除 async/await 的相同行为 -
嗨,Madhan,从这个答案中引用了它:stackoverflow.com/questions/22604644/…
-
您好 DublinDev,您好,感谢您的来信。我尝试了这种方法,它今天奏效了。但是前几天我也尝试这样做,但它不起作用,这就是为什么我也添加了等待/异步。如果您能帮助我了解何时使用哪一个,那就太好了。
标签: jasmine protractor