标签: laravel-dusk

如何检查laravel黄昏测试中是否存在元素?

在下面的代码中,我想检查元素是否存在于 XPath 中,然后只有它应该执行代码。

if($browser->driver->findElement(WebDriverBy::xpath('/html/body/div[1]/div/section/div[3]/div[2]/div/table/tbody/tr['.$i.']/td[2]'))!==null) 
{ 
    $sort=$browser->driver->findElement(WebDriverBy::xpath('/html/body/div[1]/div/section/div[3]/div22]/div/table/tbody/tr['.$i.']/td[2]'))->gettext();
echo $sort; 
}
Run Code Online (Sandbox Code Playgroud)

或者请建议是否有另一种方法来检查laravel黄昏中是否存在元素。PS 我尝试了 whenAvailable 方法,但在这种情况下它无法帮助我。

laravel-dusk

4
推荐指数
2
解决办法
7763
查看次数

使用 Dusk 测试附加文件 - 通过 Tinker 工作,但不能从测试中工作

我有一个文件上传器,我为其编写了以下测试:

$browser->visit('/product/professional-photo-prints')
        ->attach('photo', __DIR__.'/storage/app/public/testing/test_upload.jpg');
Run Code Online (Sandbox Code Playgroud)

那不上传文件。也没有错误。

但是,当我这样做时:

$browser->visit('/product/professional-photo-prints')
        ->tinker();
Run Code Online (Sandbox Code Playgroud)

一旦进入 Tinker 启动的终端,当我输入与测试中使用的完全相同的文件上传命令时:

$browser->attach('photo', __DIR__.'/storage/app/public/testing/test_upload.jpg');
Run Code Online (Sandbox Code Playgroud)

...有用。我可以看到我的 Chrome 实例上传文件等。

我一生都无法弄清楚从测试本身运行的命令或从 Tinker 运行的命令之间有什么区别。

任何帮助将不胜感激。谢谢。

PS我正在使用 Laravel 5.5 和 Dusk 2.0

php laravel laravel-dusk

4
推荐指数
1
解决办法
4013
查看次数

下拉菜单 select() 不起作用 Laravel Dusk

我在选择下拉菜单中的选项时遇到问题。我检查了文档,发现了这个:

来自文档

这是我的代码:

$browser
        ->visit('/my-slug')

        //version from the doc ==> not working
        ->select('Choose your type', 'visitor)

        //version with the name attribute ==> not working
        ->select('User[type]', 'visitor')
        ;
Run Code Online (Sandbox Code Playgroud)

当我选择用户类型时,屏幕上会出现另一个表格,以便我可以写入我的个人信息。

你有什么主意吗?

编辑:按照 HTML 代码的要求 html代码

php testing selenium laravel laravel-dusk

4
推荐指数
1
解决办法
7449
查看次数

使用参数将 http POST 抛出到 /session 的卷曲错误:Facebook\WebDriver\Exception

有没有人在运行 laravel 5.6 dusk 时遇到过这种类型的错误

错误或登录终端:

Facebook\WebDriver\Exception\WebDriverCurlException: Curl error thrown for http POST to /session with params: {"desiredCapabilities":{"browserName":"chrome","platform":"ANY","chromeOptions":{"binary":"","args":["--disable-gpu","--headless"]}}}

Failed to connect to localhost port 9515: Connection refused
Run Code Online (Sandbox Code Playgroud)

webdriver laravel laravel-dusk

4
推荐指数
1
解决办法
4194
查看次数

在使用 Laravel Dusk 运行测试之前,如何将项目存储在本地存储中?

我正在使用Laravel 5.4 ,我想知道在Laravel Dusk中运行测试之前是否可以将项目保存在 localStorage例如,假设您想要测试在完成存储在浏览器localStorage中的一长串内容后应该发生的一些行为。

在运行需要它们的测试之前是否可以将它们存储在本地存储中?如果是这样,你在考试前会怎么做?

当然,我可以编写一个脚本来手动填充 localStorage 的漫长过程就像普通用户所做的那样。但是一遍又一遍地运行相同的持久方法只是为了测试一些功能感觉不太对劲。

预先感谢您的帮助。

local-storage laravel laravel-dusk

4
推荐指数
1
解决办法
2124
查看次数

Laravel Dusk 无法断言看到屏幕截图中可见的文本(使用 whenAvailable 进行模式)

我写了一个 Laravel Dusk 测试。我试图断言模式打开后某些文本是否可见。所以,我正在使用该whenAvailable方法。但当我可以看到屏幕截图中的文本时,它失败了。

$browser->press('@finish-setup-button')
        ->whenAvailable('#modal-payment-info', function ($modal) use($paymentInfo) {
            $modal->assertSee(html_entity_decode(__('account_setup.payment')))
                  ->type('name', $paymentInfo->name)
                  ->type('iban', $paymentInfo->iban)
                  ->type('bic', $paymentInfo->bic)
                  ->press('@subscribe-button');
        });
Run Code Online (Sandbox Code Playgroud)

我收到以下消息:

有1次失败:

1) Tests\Browser\RegistrationTest::testRegistration 在元素 [body #modal- payment-info] 中没有看到预期的文本 [Payment]。未能断言 false 为 true。

截屏:

在此输入图像描述

我究竟做错了什么?

browser-testing laravel laravel-dusk

4
推荐指数
1
解决办法
3782
查看次数

在Laravel Dusk测试中模拟HTTP_REFERER?

有没有一种简单的方法可以HTTP_REFERER在Dusk测试中进行仿真?我在各个页面上使用Laravel\Dusk\Browser并调用该visit()方法。这是使用Selenium驱动程序。


如下setReferer所示:

namespace Example\Tests\Browser\Processes\PublicSite;

class SampleBrowser extends Browser {
    use MakesAssertions, ProvidesAdditionalBrowserActions, WaitsForElements;
    public function __construct(RemoteWebDriver $driver, $resolver = null)
    {
        parent::__construct($driver, new ElementResolver($driver,
                            $resolver->prefix ?? 'body'));
    }
}


class SampleTestCase extends BrowserTestCase
{
    /**
     * Test that the deal builder modal shows up.
     */
    public function testRefererRendering()
    {
        $this->browse(function (SampleBrowser $browser) {
            $browser
                // this is the bit that I want
                ->setReferer('https://example.org/') 
                ->visit('/')
                ->waitForLocation('/?came_via=example.org')
                ->assertCookieValue('came_via', 'example.org');
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-dusk

4
推荐指数
1
解决办法
291
查看次数

如何使用 Laravel Dusk 填写日期输入?

date我尝试使用以下代码用 Laravel Dusk填充输入:

$browser->type('cooked_at', (new Carbon())->format('Y-m-d'));
// ...
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误:

元素必须是用户可编辑的才能清除它

其他所有输入字段都正常。只有类型date失败。

如何使用 Laravel Dusk 填写日期输入?

php laravel laravel-5 laravel-dusk laravel-5.5

3
推荐指数
1
解决办法
2638
查看次数

如何扩展 Laravel Dusk 浏览器?

我希望重写 \Laravel\Dusk\Browser 方法并用我自己的方法扩展它,再加上一些增强功能。这是我到目前为止所做的,但它给了我这个错误:

TypeError:传递给 Tests\Browser\SequentialAppTest::Tests\Browser{closure}() 的参数 1 必须是 Tests\MyBrowser 的实例,给定的 Laravel\Dusk\Browser 实例,
在 /var/www/gtest/vendor/ 中调用laravel/dusk/src/Concerns/ProvidesBrowser.php 第 67 行

/var/www/gtest/tests/Browser/SequentialAppTest.php:135 /var/www/gtest/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:67 /var/www/gtest/tests/Browser/SequentialAppTest .php:157

文件:测试/MyBrowser.php

<?php

namespace Tests;

class MyBrowser extends \Laravel\Dusk\Browser 
{

}
Run Code Online (Sandbox Code Playgroud)

文件:tests/Browser/SequentialAppTest.php 命名空间 Tests\Browser;

use Tests\DuskTestCase;
use Tests\MyBrowser as Browser;

...

class SequentialAppTest extends DuskTestCase 
{
 ....
}
Run Code Online (Sandbox Code Playgroud)

laravel laravel-dusk

3
推荐指数
1
解决办法
1167
查看次数

Laravel dusk 您的连接不是私人的

我们最近发现我们的项目变得太大,如果没有自动化测试就无法正常运行。
在尝试为该项目编写第一个 Laravel Dusk 测试时,我发现测试失败了,而且没有明确的原因。

首先,我注意到一条关于 SSL 握手失败的奇怪行,但经过一番搜索后,这个错误并没有让我得到任何结果。

ssl客户端socked握手失败

一段时间后,我找到了以显示浏览器及其操作的方式运行黄昏的选项。结果我的测试失败了,因为由于 Chrome 的“您的连接不是私人”页面,它正在访问的页面从未显示过。

在此输入图像描述

然后我找到了 2017 年的这篇文章https://laravel-news.com/chrome-63-now-forces-dev-domains-https
根据这篇文章,当您使用 .localhost 或其他未使用的文件时,chrome 不应该显示此页面域扩展,我尝试过扩展 .local .localhost & .test 但没有成功。

有没有办法告诉 chrome 我不想看到这个页面?

laravel laravel-dusk

3
推荐指数
1
解决办法
956
查看次数