在量角器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)
我明白我得到了那个错误,因为元素不再在页面上(我想要确认),但是我不应该得到错误而不是错误?
我已经开始测试一个反应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以编程方式登录
尝试:我开始认为柏树只是从应用程序发出的间谍请求,而不是来自测试本身(正如我在上面的观点中所尝试的那样).
我在欢迎页面中添加了一个假登录按钮,该按钮将 …
在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)
除了我看到配置数据部分.我不知道我应该使用它.我尝试添加width和height选项对象,但我有与以前相同的结果.
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
我想在我的 React 项目中使用 bootstrap 4。构建的 css 文件应该只包含我在 React 组件中包含的引导程序类的样式。
我不是在搜索 Bootstrap css 类作为 React 组件;我不介意写<div className='container'>
我尝试使用reactstrap,是的,将引导 css 类作为组件(例如<Container></Container>),但您必须包含所有引导样式:
在src/index.js:
import 'bootstrap/dist/css/bootstrap.css';
Run Code Online (Sandbox Code Playgroud)
因为我已经sass-loader尝试过直接导入 scss 文件:
import bootstrapGrid from 'bootstrap/scss/_grid.scss';
const myComponent = () => <div className={bootstrapGrid.container}>[...]</div>
Run Code Online (Sandbox Code Playgroud)
但它失败了,因为它没有足够的数据来编译:
什么是正确的方向?
或者我应该使用purifycss-webpack来清理我的应用程序?并删除未使用的 css 类。
我想提供响应式图像,为此我使用 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 上写代码。
我想分享一个Noderepo,理想情况下它应该在通常的yarn install && yarn start.
但是,pg既不能连接SELECT到/从尚不存在的数据库和表。
这很麻烦,但目前需要这些前面的步骤:
docker run --name my-postgres -e POSTGRES_PASSWORD={MY_PASSWORD} -p 5432:5432 -d --rm postgres:13.0docker exec -it -u postgres my-postgres psqlCREATE DATABASE MY_DB\connect MY_DBCREATE 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 数据库的最佳实践是什么? …
我想触发一个以编程方式检查的复选框.例如:
$(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
有什么建议吗?
提前致谢.
阅读(有趣的).prop()vs .attr()和jQuery Performance:属性怀疑在我的脑海中出现了什么更好用:.prop()或.val()?我想设置一个输入文本值.
在jQuery的.prop()页面下面说:
属性通常会影响DOM元素的动态状态,而不会更改序列化的HTML属性.示例包括输入元素的value属性,输入和按钮的disabled属性或复选框的checked属性.应该使用.prop()方法来设置disabled和checked而不是.attr()方法.应该使用.val()方法来获取和设置值.
但是关于性能.prop()似乎比.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
我想知道如何绑定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中的数据.
提前致谢.
我想在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 块会很好,但它不存在。
javascript ×4
html ×2
jquery ×2
node.js ×2
angularjs ×1
auth0 ×1
checkbox ×1
cordova ×1
css ×1
css-modules ×1
cypress ×1
docker ×1
e2e-testing ×1
eventtrigger ×1
html5-video ×1
jasmine ×1
joomla ×1
joomla3.0 ×1
mocking ×1
mysqli ×1
performance ×1
php ×1
postgresql ×1
protractor ×1
pug ×1
reactjs ×1
safari ×1
srcset ×1
testing ×1
webpack ×1