返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >分析五个Laravel Dusk的使用技巧
  • 736
分享到

分析五个Laravel Dusk的使用技巧

2024-04-02 19:04:59 736人浏览 泡泡鱼
摘要

目录1. 填充隐藏字段2. 模拟 html 地理位置3. 使用 XPath 选择器4. 整页截屏5. 访问浏览器错误日志1. 填充隐藏字段 在测试某些 js 组件时 (例如自动完成,

1. 填充隐藏字段

测试某些 js 组件时 (例如自动完成,日期选择器等) ,可能需要编写动作模拟操作与这些组件交互。犹豫这些组件中的大多数最终都会将值保存到隐藏字段中。那么将值直接填写到隐藏字段中可能更加方便。这可以防止不稳定的测试,并确保我们不测试自己不拥有 / 控制的东西 (第三方组件)。

尽管 Laravel Dusk 没有为我们提供类似$browser->fillHidden($field, $value)的方法,但我们可以使用Dusk Browser Macros来实现。


//将以下代码添加到 serviceprovider.PHP 中
 
Browser::macro('fillHidden', function ($name , $value) {
    $this->script("document.getElementsByName('$name')[0].value = '$value'");
    return $this;
});
 
// 然后你可以像这样使用
 

public function fill_hidden_fields()
{
    $this->browse(function (Browser $browser) {
        $browser->visit('https://WEBsite.com/fORM')
                ->type('input.name', $name)
                ->type('input.address', $address)
                ->fillHidden('checkin_date', $date)
                ->click('#Submit')
                ->waitForText('Orders');
    });
}

2. 模拟 HTML 地理位置

我曾经不得不测试一个页面,该页面需要 HTML 网站提供地理位置,以便它可以显示一些结果。没有可用的直接模拟方法,因此我不得不重写 getCurrentPosition 方法,该方法最终将由页面调用。



public function test_geo_location()
{
    $faker = Faker\Factory::create();
    $latitude = $faker->latitude;
    $longitude = $faker->longitude;
 
    $this->browse(function (Browser $browser) use($latitude, $longitude) {
        $browser->visit(new Homepage)
            ->assertOnPage();
 
        $browser->driver->executeScript(
            "window.navigator.geolocation.getCurrentPosition = function(onSuccessCallback) {
                var position = {
                    'coords': { 'latitude': {$latitude}, 'longitude': {$longitude} }
                };
                onSuccessCallback(position);
            }"
        );
 
        $browser->click('#geolocate-button')
                ->assertSee('Longitude: $longitude')
                ->assertSee('Latitude: Latitude')
    });
}

3. 使用 XPath 选择器

有时,我会遇到无法使用 CSS 选择器来定位元素的情况。这些通常发生在动态表格中,或者在我无法修改的第三方 js 组件中。但是,Laravel Dusk 不直接支持 XPath 选择器,并且经常需要访问基础 WebDriver 实例。


$browser->driver->findElement( WebDriverBy::xpath("//table[@class='x-grid3-row-table']/tbody/tr/td/div/a[contains(text(),'$value')]") )
                ->click();

这种方法的唯一问题就是 [问题不大] 可能会终端$browser链式调用.*

4. 整页截屏

Laravel dusks 为我们提供了失败测试的屏幕截图,这对于了解测试失败的原因非常有帮助。但是,有时错误或有问题的元素可能在屏幕显示区域以外。

要在 Laravel Dusk 中创建完整的屏幕截图,我们必须在我们的 tests \ DuskTestCase.php 中创建一个 captureFailuresFor() 方法,它将覆盖最初在 Laravel\Dusk\Concerns\ProvidesBrowser 中定义的一个方法。


protected function captureFailuresFor($browsers)
{
    $browsers->each(function (Browser $browser, $key) {
        $body = $browser->driver->findElement(WebDriverBy::tagName('body'));
        if (!empty($body)) {
            $currentSize = $body->getSize();
            $size = new WebDriverDimension($currentSize->getWidth(), $currentSize->getHeight());
            $browser->driver->manage()->window()->setSize($size);
        }
        $name = str_replace('\\', '_', get_class($this)).'_'.$this->getName(false);
 
        $browser->screenshot('failure-'.$name.'-'.$key);
    });
}

现在,无论何时我们调用$browser->screenshot('$shotname'),发生错误时我们都将获得完整的屏幕截图

5. 访问浏览器错误日志

这个没什么问题,只是我发现的一些有趣的东西。我们可以通过调用 $browser->driver->manage()->getLog(‘browser') 来访问浏览器控制台日志。

这将在浏览器的控制台中返回一系列日志。例如,对于页面上没有 javascript 错误的测试而言,它可能很有用。


@test
public function no_browser_errors()
{
    $this->browse(function ($browser) {
        $this->assertEmpty($browser->driver->manage()->getLog('browser'));
    });
}

但是请注意,它不包含console.log调用的输出

以上就是分析五个Laravel Dusk的使用技巧的详细内容,更多关于五个Laravel Dusk的使用技巧的资料请关注编程网其它相关文章!

--结束END--

本文标题: 分析五个Laravel Dusk的使用技巧

本文链接: https://lsjlt.com/news/127191.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 分析五个Laravel Dusk的使用技巧
    目录1. 填充隐藏字段2. 模拟 HTML 地理位置3. 使用 XPath 选择器4. 整页截屏5. 访问浏览器错误日志1. 填充隐藏字段 在测试某些 JS 组件时 (例如自动完成,...
    99+
    2024-04-02
  • 分享Spring Cloud OpenFeign 的五个优化技巧
    目录一、超时优化1、设置Ribbon超时时间2、设置OpenFeign超时时间二、请求连接优化1、引入Apache HttpClient依赖2、开启Apache HttpClient...
    99+
    2024-04-02
  • 使用Laravel的一些小技巧
    这篇文章给大家分享的是有关使用Laravel的一些小技巧的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Laravel 是什么Laravel 是一套简洁、优雅的PHP Web开发框架。它可以让你从面条一样杂乱的代码...
    99+
    2023-06-14
  • 五个实用技巧,让你更好地使用display
    探索display的五个实用技巧 在现代社会中,display(展示)已经成为了一个非常重要的概念。无论是在商业领域还是在个人生活中,我们都需要有一定的展示能力来吸引人们的注意力,让自己或者自己的产品得到更多的关注和认可。本文将...
    99+
    2024-02-02
    动画 字体
  • 五个嵌入式C语言中的实用技巧分享
    目录1、动态绑定、回调函数2、使用宏给结构体初始化3、结构体内置函数指针4、使用do{}while(0)封装宏5、void*1、动态绑定、回调函数 回调函数可以达到动态绑定的作用,在...
    99+
    2022-12-30
    嵌入式C语言实用技巧 C语言实用技巧 嵌入式C语言
  • Laravel使用技巧有哪些
    今天小编给大家分享一下Laravel使用技巧有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.胖模型,瘦控制器如果我们...
    99+
    2023-07-04
  • Laravel 框架中 ASP 缓存的使用技巧分享。
    Laravel 框架中 ASP 缓存的使用技巧分享 在 Laravel 框架中, ASP 缓存是一个非常重要的组件,它可以大大提高网站的访问速度。ASP 缓存是一种内存缓存,它可以将经常访问的数据缓存在内存中,当用户再次访问该数据时,直接从...
    99+
    2023-06-08
    缓存 linux laravel
  • 五个提升Python的执行效率的技巧分享
    目录1、合理使用标准或非标准库2、减少循环的使用3、注意重复代码运行4、减少全局变量使用5、使用合理的数据结构python作为使用最广泛的编程语言之一,有着无穷无尽的第三方非标准库的...
    99+
    2023-05-15
    Python提升执行效率技巧 Python提升执行效率 Python 技巧
  • css技巧使用实例分析
    今天小编给大家分享一下css技巧使用实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2024-04-02
  • css使用技巧实例分析
    今天小编给大家分享一下css使用技巧实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2024-04-02
  • Vue使用技巧实例分析
    这篇文章主要介绍“Vue使用技巧实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue使用技巧实例分析”文章能帮助大家解决问题。1、将一个 prop 限制在一个类型的列表中我们在使用 prop...
    99+
    2023-06-29
  • Python使用技巧实例分析
    今天小编给大家分享一下Python使用技巧实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。first库没错,就是fir...
    99+
    2023-07-02
  • win101903使用技巧实例分析
    这篇文章主要讲解了“win101903使用技巧实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“win101903使用技巧实例分析”吧!1.调出win10表情包,按【Windows 徽标...
    99+
    2023-07-02
  • Git使用小技巧的示例分析
    这篇文章将为大家详细讲解有关Git使用小技巧的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Git是一个非常强大的版本控制系统,但是Git异于常规以文件为基础的VCS系统架构,以及基于纯命令行的功...
    99+
    2023-06-28
  • 十五个Linux实用技巧是什么
    小编今天带大家了解十五个Linux实用技巧是什么,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“十五个Linux实用技巧是什么”的知识...
    99+
    2023-06-28
  • Laravel Eloquent使用技巧有哪些
    这篇“Laravel Eloquent使用技巧有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Laravel Eloqu...
    99+
    2023-07-04
  • 五个节约生命的Python小技巧
    Python是一种强大且易上手的语言,语法简洁优雅,不像Java那么繁琐废话,并且有一些特殊的函数或语法可以让代码变得更加简短精悍。根据笔者经验,下面介绍常用的5个Python小技巧:字符串操作列表推导lambda 及 map() 函数if...
    99+
    2023-05-14
    Python 技巧
  • Laravel使用Queue队列的技巧汇总
    Laravel 队列为不同的后台队列服务提供统一的 API,例如 Beanstalk,Amazon SQS,Redis,甚至其他基于关系型数据库的队列。队列的目的是将耗时的任务延时处理,比如发送邮件,从而大幅度缩短 Web 请求和相应的时间...
    99+
    2023-09-02
    laravel php 开发语言
  • 10个Python中Pip的使用技巧分享
    目录Python pip1.安装 pip2.升级 pip3.安装库4. 库的批量安装5.卸载和升级包6. 冻结 Python pip 依赖7.查看库信息8.查看需要升级的库9. 检查...
    99+
    2024-04-02
  • Python中隐藏的五种实用技巧分享
    目录1. ... 对象2.解压迭代对象3.展开的艺术4.下划线 _ 变量5.多种用途的else循环异常处理1. ... 对象 没错,你没看错,就是 "....
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作