gpt4 book ai didi

javascript - Casper js 无法获得相同的结果

转载 作者:行者123 更新时间:2023-12-02 17:24:21 24 4
gpt4 key购买 nike

我为我们的应用程序开发了 CasperJS 脚本。有时它工作得很好,但有时却达不到我们的预期。

你能帮我一下吗?我可以在哪里改进我的脚本来实现它?

请找到下面的脚本。

casper.test.comment('Tests for Add and Remove products');
var x= require('casper').selectXPath;
casper.start(navigationSupport.baseUrl);
casper.clear();
phantom.clearCookies();
casper.then(function() {
// fill valid credentials
var userName = 'asdf';
var password = 'qwerty';
this.fill('form#loginForm', {j_username: userName, j_password: password}, true);
this.echo('Login successfully ');
this.echo('Loged in user :: '+userName);
});


casper.then(function(){
this.capture('images/addRemove/step1_login.png', {
top: 0,
left: 0,
width: 0,
height: 0
});
});


casper.then(function(){
this.echo('Cart count before adding product:'+this.getHTML('div.cart-count.button_border'));
this.click(x('//div[@id="slider-body"]/table[@class="slider-item active"]/tbody/tr[1]/td[3]/div[@id="add-to-cart-standard2"]/input'));
this.echo("1st Product added to the Cart:");
});


casper.then(function(){
this.wait(3000,function(){
this.echo("Waiting");
});
});


casper.then(function(){
this.capture('images/addRemove/step2_addtocart1.png', {
top: 0,
left: 0,
width: 0,
height: 0
});
});


casper.then(function(){
this.echo('Cart count after adding 1st product:'+this.getHTML('div.cart-count.button_border'));
this.click(x('//div[@id="slider-body"]/table[@class="slider-item active"]/tbody/tr[2]/td[3]/div[@id="add-to-cart-standard2"]/input'));
this.echo("2nd Product added to the Cart:");
});


casper.then(function(){
this.wait(3000,function(){
this.echo('Waiting..............');
});
});


casper.then(function(){
this.capture('images/addRemove/step3_addtocart2.png', {
top: 0,
left: 0,
width: 0,
height: 0
});
});

casper.then(function(){
this.echo('Cart count after adding 2nd product:'+this.getHTML('div.cart-count.button_border'));
this.click(x('//header[@id="masthead"]/section/div/div[2]/form/nav/div/a'));
});

最佳答案

如果您的应用程序进行一些 AJAX 调用(或任何异步调用),则 Casper 可能会在 AJAX 调用完成之前评估“then” block 。

更可靠的方法是使用“waitForSelector”而不是“then”(或任何 waitFor... 方法,具体取决于您的情况),以确保仅当预期结果可观察时才会评估您的下一个测试步骤。例如,如果您的 AJAX 调用用于生成 <span class="result-item"> 的列表:

casper.waitForSelector("#result-item", function(){
this.capture('images/addRemove/step3_addtocart2.png', {
top: 0,
left: 0,
width: 0,
height: 0
});

关于javascript - Casper js 无法获得相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23629027/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com