Javascript 自动完成文本字段不';t打开

Javascript 自动完成文本字段不';t打开,javascript,phantomjs,casperjs,Javascript,Phantomjs,Casperjs,我有一个文本字段,当用户输入一些字符时,会出现一个bloc并显示一些结果建议。我想数一数建议的数量,但我不知道该怎么做 我可以通过CasperJSAPI输入一些字符,但无法获取出现的自动完成块的内容。(“ui-id-6”) 我的页面测试: 我想要测试的表格位于左上角的“Recherche détaillée”区域。因此,我必须为第一个下拉字段(“Quel type d'appareil”)选择一个值,然后在第二个下拉字段(“Quelle marque?”)中选择一个值。 所以,第三块“Quel

我有一个文本字段,当用户输入一些字符时,会出现一个bloc并显示一些结果建议。我想数一数建议的数量,但我不知道该怎么做

我可以通过CasperJSAPI输入一些字符,但无法获取出现的自动完成块的内容。(“ui-id-6”)

我的页面测试:

我想要测试的表格位于左上角的“Recherche détaillée”区域。因此,我必须为第一个下拉字段(“Quel type d'appareil”)选择一个值,然后在第二个下拉字段(“Quelle marque?”)中选择一个值。 所以,第三块“Quelle référence d'appareil”变为活动,这是我想要测试的自动完成字段

我的示例代码:(10月18日更新)


我的casper版本:1.1.0-beta3,而phantomjs:1.9.7

如果您使用它的
然后
回调,Wait就会工作。所有
then*
wait*
casper步进函数都是异步的。这意味着在一个步骤中,您不应该在其他异步函数之后调用同步函数

this.then(function(){
    this.sendKeys('#productReference', '*', {keepFocus: true}); //so, an element "ui-id-6" appear and in firebug, there are the suggestions of results
    this.capture("screen01.png"); 

    //try with wait...
    this.wait(2000, function then(){
        this.echo(this.getHTML("#ui-id-6")); // wall of text
    });

    // or

    this.waitUntilVisible("#ui-id-6", function(){
        this.echo(this.getHTML("#ui-id-6"));
    });
});

Thx for your help=)我尝试了“wait(2000)”,但出现了一个错误“找不到与选择器匹配的元素:#ui-id-6”。和“waitUntilVisible”,我得到“等待超时5000ms已过期,存在”。我不明白,因为如果在“this.then”中,我写下了this.echo(“this.getHTML”(#ui-id-6))“,我没有错误,选择器为find,但返回为empty。我无法重现您的问题。您使用的是什么Casper/Phantom版本?是否有一些代码已删除?使用我的修复程序,像现在的问题一样尝试代码。我的Casper版本:1.1.0-beta3,phantomjs:1.9.0。我复制/粘贴了您的代码,并且得到了相同的错误…x)我会在我的第一篇文章中更新我的新代码。将PhantomJS更新为1.9.7.Casper版本:1.1.0-beta3和PhantomJS:1.9.7。问题总是出在第26行(“this.echo(this.getHTML(#ui-id-6”));“wait(2000…)”中的“未找到与选择器匹配的元素:#ui-id-6”
this.then(function(){
    this.sendKeys('#productReference', '*', {keepFocus: true}); //so, an element "ui-id-6" appear and in firebug, there are the suggestions of results
    this.capture("screen01.png"); 

    //try with wait...
    this.wait(2000, function then(){
        this.echo(this.getHTML("#ui-id-6")); // wall of text
    });

    // or

    this.waitUntilVisible("#ui-id-6", function(){
        this.echo(this.getHTML("#ui-id-6"));
    });
});