我正在阅读一个教程,在PHPUNIT上我得到了很好的退出教程...并做了一些登录 在我自己..
但我进入网络加载页面并在实时页面上提交值
它工作正常...但我的问题是,在输入用户密钥后..提交但它不会等待下一页
我在这里看到类似的问题,但没有一个能为我解决
请允许任何人帮助我。
这是我的代码
<?php
class TestLogin extends PHPUnit_Extensions_Selenium2TestCase {
public function setUp()
{
$this->setHost('localhost');
$this->setPort(4444);
$this->setBrowser('firefox');
$this->setBrowserUrl('http://localhost/tutor');
}
public function setSpeed($timeInMilliSec)
{
$this->setSpeed('120');
}
/*Function to locate website*/
public function testHasLoginForm()
{
$this->url('http://www.jamb.org.ng/DirectEntry/');/*This is the site*/
$username = $this->byId('ctl00_ContentPlaceHolder1_RegNumber');/*Search for a name*/
##ctl00_ContentPlaceHolder1_txtRegNumber
$action = $this->byId('ctl00_ContentPlaceHolder1_Reprint')->attribute('action');
$this->byId('ctl00_ContentPlaceHolder1_RegNumber')->value('49130518ED');/*value of the textbox*/
$jump = $this->byId('ctl00_ContentPlaceHolder1_Reprint');
$jump->submit();
}
}
?>
答案 0 :(得分:1)
您可以使用
$this->timeouts()->implicitWait(10000);//10 seconds
设置页面上搜索元素的超时时间。
答案 1 :(得分:0)
Resolved.i刚刚改变了
$jump->submit();
到
$this->byName('ctl00$ContentPlaceHolder1$Reprint')->click();
答案 2 :(得分:0)
如果您想等待不同的元素甚至功能,我建议使用此pattern 这是等待元素的示例。我建议在这里使用byCssSelector以获得更大的灵活性。
例如,您可以轻松地使用此模式等待元素可点击:
protected function waitForClickable($element, $wait=30) {
for ($i=0; $i <= $wait; $i++) {
try{
$element->click();
return true;
}
catch (Exception $e) {
sleep(1);
}
}
return false;
}
您甚至可以在任何传递匿名函数的上下文中使用它作为参数:
protected function waitForAny($function, $args, $wait=30) {
for ($i=0; $i <= $wait; $i++) {
try{
call_user_func_array($function, $args);
return true;
}
catch (Exception $e) {
sleep(1);
}
}
return false;
}
用法:
$f = function($e){
$e->click();
};
$this->waitForAny($f, array($element));