当我使用Casper脚本访问nike.com商店页面(下面列出的测试URL)时,我无法更改'skuAndSize'选择元素的值。我通过检查假设更改后的屏幕截图来验证这一点。我用来做的代码是:
// Add to cart
casper.then(function() {
this.fillSelectors('form.add-to-cart-form', {
'select[name="skuAndSize"]' : '3857923:9'
}, false);
this.capture("test.png");
this.click('button#buyingtools-add-to-cart-button');
});
有没有更好的方法来处理它?</ p>
测试网址:http://store.nike.com/us/en_us/pd/mercurial-superfly-fg-soccer-cleat/pid-1531739/pgid-1481200
答案 0 :(得分:1)
我查看了您的链接,隐藏了选择框。它被替换为标记,它更改了引擎盖下的选择框,但选择框和自定义标记之间的连接是一种方式。使用JS更改选择框时,不会更改自定义标记。
如果您只想测试添加到购物车的功能,您可以像保存它一样保留它,因为在提交时会使用基础选择框数据。
如果要重新创建用户交互,则必须明确单击此(未经测试):
casper.thenClick(".exp-pdp-size-and-quantity-container > .exp-pdp-size-container")
.wait(100) // little time to open dropdown
.thenClick(x("//div[contains(@class,'exp-pdp-size-dropdown-container')]/ul/li[not(contains(@class,'exp-pdp-size-not-in-stock'))][3]"));
这应该使用CasperJS XPath实用程序选择第三个可用大小。