繁体   English   中英

如何在Laravel-Dusk中使用页面对象

[英]How to work with Page Objects in laravel-dusk

我是php和黄昏的新手,但是我尝试在黄昏使用页面对象,并且因为在尝试添加页面对象进行测试时,我被卡住了,phpstorm说“在此$ this中找不到方法logInUserName ”。 有人可以向我解释我错了吗?

我有页面课程:

<?php

namespace Tests\Browser\Pages;

use Laravel\Dusk\Browser;

class LogInPage extends Page
{
/**
 * Get the URL for the page.
 *
 * @return string
 */
public function url()
{
    return '/login';
}

/**
 *
 * @return void
 */
public function logInUserName(Browser $browser)
{
   $browser->type("#username", "lol");
}

}

我有考试课

use Tests\Browser\Pages\LogInPage;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Tests\DuskTestCase;
use Laravel\Dusk\Browser;
use PHPUnit\Framework\Assert;

class ExampleTest extends DuskTestCase
{
/**
 * A basic browser test example.
 *
 * @return void
 */
public function testLogInFail()
{
    $this->browse(function (Browser $browser) {
        $browser
            ->visit(new LogInPage)
            ->logInUserName()
            ->keys("#password","lol")
            ->click("button.btn-primary"));}

同意这很烦人,有2种方法可以解决这个问题

  1. 重新启动浏览器对象上的链接,您可能仍然会收到有关logInUserName的警告,但是您将获得代码帮助,我同意这在继续学习时会很有用。
$browser
    ->visit(new LogInPage)
    ->logInUserName();
$browser
    ->keys("#password","lol")
    ->click("button.btn-primary"));
  1. 创建定义您的自定义功能的帮助文件

或使用此要点在IDE读取的项目根目录中创建一个文件-https: //gist.github.com/slava-vishnyakov/5eb90352fc97702f53a41888e5bae27a

唯一的问题是您可能会收到有关类Browser的多个定义的PHPSTORM警告...不确定如何解决该问题

结果是这样的

<?php

namespace Laravel\Dusk {
    class Browser
    {
        /**
         * @return Browser
         */
        public function logInUserName()
        {
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM