我有以下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)"在致电"点击"之前的指示方法,我的测试每次都通过。
你知道如何解决我的问题吗?
本
答案 0 :(得分:2)
我是一个java家伙..但是,根据你的问题,我建议你去implicit or explicit waits解决你的问题..
在谷歌搜索中,我发现这个代码用于隐式等待,你可以在这里解决你的问题:
$this->timeouts()->implicitWait(30000);
在$this->url('https://mywebsiteurl.com');
上方代码的顶部添加此内容。这将确保每次selenium尝试定位元素时,它将等待最多30秒。希望这会有所帮助。