小编Mik*_*kel的帖子

量角器,使用isDisplayed()我得到NoSuchElementError:找不到使用定位器的元素

在量角器2.0中,我正在检查expect()是否显示了一个元素.我希望是假的,但奇怪的是我得到以下错误:

NoSuchElementError:找不到使用locator找到的元素:By.id("userForm")

我的代码是:

describe('closeModal', function() {
    it('should close the alert that appears after registration.', function(){
        element(by.id('closeAlertModalButton')).click();
        expect(element(by.id('userForm')).isDisplayed()).toBeFalsy();
    });
});
Run Code Online (Sandbox Code Playgroud)

我明白我得到了那个错误,因为元素不再在页面上(我想要确认),但是我不应该得到错误而不是错误?

javascript jasmine angularjs angularjs-e2e protractor

23
推荐指数
1
解决办法
2万
查看次数

如何使用赛普拉斯在E2E测试中登录Auth0?

我已经开始测试一个反应webapp但我没有走远,因为我遇到了登录问题.我正在使用cypress e2e测试工具.

将显示一个欢迎页面,其中包含一个要登录的按钮,该按钮将重定向到您的auth0服务.用户使用电子邮件和密码登录,然后使用令牌重定向回webapp.

我尝试了许多不同的方法,导致了不同的问题.

注意:我不想测试Auth0,我只想输入我的webapp.

尝试1.单击登录按钮

尝试:赛普拉斯应该像用户一样做,因此测试将点击登录按钮并转到Auth0并填写凭据.问题:赛普拉斯不允许您在测试期间导航到其他域.

由于赛普拉斯更改了自己的主机URL以匹配您的应用程序的URL,因此它要求您的应用程序保留在同一个超级域中以进行单个测试.

您应该能够禁用该设置"chromeWebSecurity": false,cypress.json但它无法使用,因为您只能访问单个域cy.visit()

尝试2.从测试中以编程方式登录

尝试:使用auth0-js库登录cypress测试,因此不需要单击登录按钮,因此不会发生域更改.

describe('Waiting to fetch', () => {
  beforeEach(() => {
    this.fetchAuthDeferred = getDeferred()
    cy.visit('http://localhost:3000', {
      onBeforeLoad(win) {
        cy.stub(win, 'fetch')
          .withArgs($url)
          .as('fetchAuth')
          .returns(this.fetchAuthDeferred.promise)
      }
    })
  })

  it('login', () => {
    cy.visit('http://localhost:3000')

    const auth = new auth0.WebAuth(authOptions)
    auth.login(loginOptions)

    cy.get('@fetchAuth', { timeout: 10000 }).should('haveOwnProperty', 'token')

    cy.visit('http://localhost:3000')
    cy.get('[class*="hamburger"]').click()
  })
})
Run Code Online (Sandbox Code Playgroud)

问题:cy.route() 不等待获取请求,解决方法是使用cy.stub(win, 'fetch').它不会等待:

在此输入图像描述

尝试3.从webapp以编程方式登录

尝试:我开始认为柏树只是从应用程序发出的间谍请求,而不是来自测试本身(正如我在上面的观点中所尝试的那样).

我在欢迎页面中添加了一个假登录按钮,该按钮将 …

testing mocking e2e-testing auth0 cypress

17
推荐指数
1
解决办法
3881
查看次数

为什么在iOS上使用Ionic cordovaCapture(Apache Cordova媒体捕获插件)录制低分辨率视频(480x360)?

在Ionic项目中,我正在使用cordova捕获插件录制视频,该插件实际上基于Apache媒体捕获插件.

Android用户可以选择视频尺寸,但在iOS上没有按钮.我正在测试一台录制在1920x1080的iPhone 5,但是我的Ionic应用视频是480x360,注意长宽比是4:3而不是16:9.我想要至少720p的视频尺寸.

我阅读了插件文档,只有三个选项; 持续时间和限制.这是否意味着无法设置视频的尺寸?

var options = { 
    limit: 1, 
    duration: 15,
    quality: 1 // Only for Android, Video quality parameter, 0 means low quality, suitable for MMS messages, and value 1 means high quality
}; 

$cordovaCapture.captureVideo(options)
    .then(function(videoData) {});
Run Code Online (Sandbox Code Playgroud)

除了我看到配置数据部分.我不知道我应该使用它.我尝试添加widthheight选项对象,但我有与以前相同的结果.

var options = { 
    limit: 1, 
    duration: 15,
    type: "video/quicktime",
    height: 720,
    width: 1280,
    quality: 1
};
Run Code Online (Sandbox Code Playgroud)

它说任何平台都不支持,这不是很奇怪吗?:-)

任何平台都不支持.所有配置数据阵列都是空的.

知道我该怎么办?

html5-video phonegap-plugins cordova ionic-framework cordova-plugins

6
推荐指数
1
解决办法
1808
查看次数

在 React 中如何只导入需要的 Bootstrap 样式。Bootstrap css 模块?

我想在我的 React 项目中使用 bootstrap 4。构建的 css 文件应该只包含我在 React 组件中包含的引导程序类的样式。

我不是在搜索 Bootstrap css 类作为 React 组件;我不介意写<div className='container'>

1. 反应带

我尝试使用reactstrap,是的,将引导 css 类作为组件(例如<Container></Container>),但您必须包含所有引导样式

src/index.js

import 'bootstrap/dist/css/bootstrap.css';
Run Code Online (Sandbox Code Playgroud)

2.scss源文件

因为我已经sass-loader尝试过直接导入 scss 文件:

import bootstrapGrid from 'bootstrap/scss/_grid.scss';
const myComponent = () => <div className={bootstrapGrid.container}>[...]</div>
Run Code Online (Sandbox Code Playgroud)

但它失败了,因为它没有足够的数据来编译:

在此处输入图片说明

3. 其他解决方案:

什么是正确的方向?

或者我应该使用purifycss-webpack来清理我的应用程序?并删除未使用的 css 类。

css twitter-bootstrap reactjs webpack css-modules

6
推荐指数
1
解决办法
5547
查看次数

Safari 在调整大小时不请求 srcset 图像

我想提供响应式图像,为此我使用 srcset 属性。

<img 
    src="https://res.cloudinary.com/demo/image/upload/w_480/group.jpg" 
    alt=""
    srcset="
        https://res.cloudinary.com/demo/image/upload/w_480/group.jpg 480w,
        https://res.cloudinary.com/demo/image/upload/w_750/group.jpg 750w,
        https://res.cloudinary.com/demo/image/upload/w_1334/group.jpg 1334w,
        https://res.cloudinary.com/demo/image/upload/w_1536/group.jpg 1536w,
        https://res.cloudinary.com/demo/image/upload/w_2048/group.jpg 2048w
    "
>
Run Code Online (Sandbox Code Playgroud)

Chrome 和 android 按预期工作;在纵向移动中,它将加载一个“小”图像,只是填充宽度所需的图像,如果您转动手机,它将根据新宽度请求新图像。

在 Chrome 检查器工具中选择 iOS 设备(iPhone 6、iPad)效果很好:

在此处输入图片说明

但是 Safari 桌面版和移动版都不会在调整大小/转动设备上请求新图像。但它确实在重新加载时请求正确的图像。

我尝试过 Safari 9.1.2 和 11.0、iPhone 6 (iOS 10.3.2)、iPhone 6s (iOS 11.0) 和 iPad Air 2 (iOS 11.0)。

Safari 是否仍然缺乏对 srcset 的支持?它被认为是完全支持的

codepen测试自己。 也在 codepen 上写代码

html safari mobile-safari srcset responsive-images

5
推荐指数
1
解决办法
1952
查看次数

如何在节点 pg 中设置 postgres 数据库和表

我想分享一个Noderepo,理想情况下它应该在通常的yarn install && yarn start.

但是,pg既不能连接SELECT到/从尚不存在的数据库和表。

这很麻烦,但目前需要这些前面的步骤:

  1. 获取 postgres; docker run --name my-postgres -e POSTGRES_PASSWORD={MY_PASSWORD} -p 5432:5432 -d --rm postgres:13.0
  2. 启动 psql; docker exec -it -u postgres my-postgres psql
  3. CREATE DATABASE MY_DB
  4. \connect MY_DB
  5. 粘贴以下 SQL 脚本以创建表
CREATE TABLE my_table (
  id INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
  field_1 VARCHAR ( 50 ) UNIQUE NOT NULL,
  field_2 INT NOT NULL,
);
Run Code Online (Sandbox Code Playgroud)

因为我已经从泊坞窗获得的Postgres,是docker-componse合理的解决方案?我不太熟悉dockerfile,有没有其他选择?

在节点中初始化 postgres 数据库的最佳实践是什么? …

postgresql node.js node-postgres docker

5
推荐指数
1
解决办法
833
查看次数

使用jQuery以编程方式"勾选"复选框

我想触发一个以编程方式检查的复选框.例如:

$(function(){
    //create a trigger that if a checkbox changes, eg is clicked/change show an alert
    $("#idCheckbox").on("change", function(){
        if($(this).is(':checked')){
            alert("Is checked!");
        }
    });

    //onload put it checked
    $("#idCheckbox").attr("checked", "checked");
});
Run Code Online (Sandbox Code Playgroud)

"问题"是,如果我通过javascript检查加载复选框,则不会触发on()方法,并且不会显示警报.

上面的代码是一个例子,实际上检查复选框的脚本不是我的,我无法修改它.

我正在使用jQuery 1.8.0

有什么建议吗?

提前致谢.

javascript checkbox jquery eventtrigger

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

.prop()VS .val().使用jQuery设置输入文本值

阅读(有趣的).prop()vs .attr()jQuery Performance:属性怀疑在我的脑海中出现了什么更好用:.prop()或.val()?我想设置一个输入文本值.

jQuery的.prop()页面下面说:

属性通常会影响DOM元素的动态状态,而不会更改序列化的HTML属性.示例包括输入元素的value属性,输入和按钮的disabled属性或复选框的checked属性.应该使用.prop()方法来设置disabled和checked而不是.attr()方法.应该使用.val()方法来获取和设置值.

但是关于性能.prop()似乎比.val()设置值更好: .prop()vs .attr()vs .val()

所以我没有答案.我该做什么?

$('#element').prop('value', 'Example');
Run Code Online (Sandbox Code Playgroud)

要么

$('#element').val('Example');
Run Code Online (Sandbox Code Playgroud)

EDIT1: .prop()总是优于.val() 在此输入图像描述 在此输入图像描述 在此输入图像描述

编辑2: 我现在尝试获取一个值,也.prop()更快 在此输入图像描述

EDIT3: 正如@BeatAlex所说,如果我们想要性能本机js 非常快

var x = document.getElementById('element').value;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

正如你们中的一些人说它可能会更快,但如果存在.val(),我们就会使用它.

PS:当我写这篇文章时,当前的jQuery版本是1.11或2.1

javascript performance jquery

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

如何在Joomla 3的查询中使用prepare语句/绑定值?

我想知道如何绑定where子句中的值.我已经明白这是出于安全原因必须做的事情.

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
    ->select("*")
    ->from($db->quoteName("food"))
    ->where("taste = :taste")
    ->bind(':taste', 'sweet');
$db->setQuery($query);
$rows = $db->loadAssocList();
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

您的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便在第3行的':taste'附近使用正确的语法SQL = SELECT*FROM foodWHERE taste =:taste

我的代码基于这篇文章.它说在Joomla 3.1中只有" PDO/Sqlite和PDO/Oracle支持预备语句 ",我使用的是Joomla 3.2.1和MySQL,以及我的Joomla配置MySQLi.可能是那个问题?

我很困惑因为我不知道API/Class必须遵循什么.

即使我开始怀疑是否必须使用JFactory :: getDbo()来选择/插入/更新/删除Joomla DB中的数据.

提前致谢.

php joomla mysqli prepared-statement joomla3.0

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

完成 JADE 中的 if-else 条件块

我想在Jadeif else中完成一个条件块,因此可以在 if/else 之后添加嵌套代码。

- var name = 'you';
- if(name != '')
    p Hello #{name}
- else
    p Hello world
| !!!
Run Code Online (Sandbox Code Playgroud)

我想要使​​用空名称 var

<p>Hello you!!!</p>
Run Code Online (Sandbox Code Playgroud)

但我得到

<p>Hello world</p>
!!!
Run Code Online (Sandbox Code Playgroud)

name = you我想要得到

<p>Hello world!!!</p>
Run Code Online (Sandbox Code Playgroud)

我必须更改什么才能将更多文本/标签放入 p 元素中?我的意思是嵌套到 if/else 块中,并且对于这两种情况都是通用的。重点是不要在代码中重复!!!

像 try/catch 这样的 finally 块会很好,但它不存在。

html javascript template-engine node.js pug

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