PhpUnit点击提交后不等待加载页面

时间:2014-07-27 03:35:44

标签: php selenium phpunit pear wampserver

我正在阅读一个教程,在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();
}

}
?>

3 个答案:

答案 0 :(得分:1)

您可以使用

 $this->timeouts()->implicitWait(10000);//10 seconds

设置页面上搜索元素的超时时间。

https://github.com/sebastianbergmann/phpunit-selenium/blob/master/PHPUnit/Extensions/Selenium2TestCase/Session/Timeouts.php

答案 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));