没有睡眠指令的“无法定位元素”错误

时间:2015-02-12 17:13:39

标签: php selenium selenium-webdriver phpunit

我有以下Selenium测试:

class MyTest extends PHPUnit_Extensions_Selenium2TestCase
{
    public function testFunction() {
        $this->url('https://mywebsiteurl.com');

        // ...
        // Several selenium actions here
        // ...

        $this->byId('form-submit-button')->click(); // Submit a form to another URL
        $this->byId('next')->click();
    }
}

随机,我的测试失败并出现以下错误:

PHPUnit_Extensions_Selenium2TestCase_WebDriverException: Unable to locate element: {"method":"id","selector":"next"}
Command duration or timeout: 49 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.40.0', revision: 'fbe29a9', time: '2014-02-19 20:54:28'
System info: host: 'selenium-server', ip: '15.121.50.61', os.name: 'Linux', os.arch: 'amd64', os.version: '3.2.0-4-amd64', java.version: '1.6.0_27'
Session ID: 4e7822e4-73dc-473e-8010-6717a04d243e
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{platform=LINUX, acceptSslCerts=true, javascriptEnabled=true, browserName=firefox, rotatable=false, locationContextEnabled=true, version=24.6.0, cssSelectorsEnabled=true, databaseEnabled=true, handlesAlerts=true, browserConnectionEnabled=true, nativeEvents=false, webStorageEnabled=true, applicationCacheEnabled=true, takesScreenshot=true}]

当我看到生成的屏幕截图时,我可以看到按钮是" next"出现在我的网页上,当我添加一个" sleep(5)"在致电"点击"之前的指示方法,我的测试每次都通过。

你知道如何解决我的问题吗?

1 个答案:

答案 0 :(得分:2)

我是一个java家伙..但是,根据你的问题,我建议你去implicit or explicit waits解决你的问题..

在谷歌搜索中,我发现这个代码用于隐式等待,你可以在这里解决你的问题:

$this->timeouts()->implicitWait(30000); 

$this->url('https://mywebsiteurl.com');上方代码的顶部添加此内容。这将确保每次selenium尝试定位元素时,它将等待最多30秒。希望这会有所帮助。