PhpUnit 点击提交后不等待加载页面
Posted
技术标签:
【中文标题】PhpUnit 点击提交后不等待加载页面【英文标题】:PhpUnit Not waiting to load page after clicking submit 【发布时间】:2014-09-18 14:29:36 【问题描述】:我正在阅读一个教程,在 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();
?>
【问题讨论】:
setSpeed
是没用的方法。
【参考方案1】:
你可以使用
$this->timeouts()->implicitWait(10000);//10 seconds
设置页面上搜索元素的超时时间。
https://github.com/sebastianbergmann/phpunit-selenium/blob/master/PHPUnit/Extensions/Selenium2TestCase/Session/Timeouts.php
【讨论】:
@user3803698 ,是的,我做到了。 @user3803698 ,OK (1 test, 0 assertions)
无修改
请退出对 selenium、phpunit、pear 和 rest 的了解,但我一直在努力学习教程....如果我建立一个页面....我在那个页面登录退出好了我的本地主机......但这次你想自动化一个网站......我一直在努力让别人提问。不知道我们是否可以联系...这是我的 Skype 美洲狮
@user3803698 ,你想达到什么目的?
我想用值 49130518ED 登录到jamb.org.ng/DirectEntry 并访问此链接jamb.org.ng/DirectEntry/PrintSlip.aspx 并下载jamb.org.ng/DirectEntry/ImagePage.aspx 中的图片就是这样【参考方案2】:
已解决。我只是改变了
$jump->submit();
到
$this->byName('ctl00$ContentPlaceHolder1$Reprint')->click();
【讨论】:
我只是被这个...我想在登录后下载整个页面。我得到了这个 Print Popout 的东西。我只想在登录和 teardown() 后将 jamb.org.ng/DirectEntry/ImagePage.aspx 保存到我的电脑中,你有什么办法可以做到吗??【参考方案3】:如果您想等待不同的元素甚至功能,我建议使用此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));
【讨论】:
以上是关于PhpUnit 点击提交后不等待加载页面的主要内容,如果未能解决你的问题,请参考以下文章
FilterIterator 应该是 PHPUnit\Framework\TestSuiteIterator 的实例
Composer 更新 codeception - phpunit 不更新
我无法使用 phpunit 进行测试:无法打开文件“autoload.php”
在 Webdriver 中提交表单后如何等待页面加载。我正在使用 Firefox 驱动程序
Javascript在ajax提交过程中页面显示加载中,请等待效果,并在提交过程中限制确定按钮防止多次提交,提交完成后,解除提交限制