我正在构建一个Webapp,如果禁用了Javascript,该Webapp将落在
标记上。我想验证该标签显示的内容,但是我不确定如何使用我拥有的任何框架或一般的框架来做到这一点。
在禁用Javascript的情况下,默认情况下,有问题的应用显示以下内容:
加载脚本后,应用程序将以下内容替换为以下内容:
你好,世界
现在进行测试,我将NightmareJS和Testem与茉莉一起使用。我不必使用那些,但是如果可能的话,我仍然想使用Javascript。
我完全迷住了,甚至不知道从哪里开始-所有StackOverflow问题似乎都是关于如何使用
,而不是最终验证结束或单元测试(以自动化方式)。
答案 0 :(得分:2)
NightmareJS在后台使用Electron来运行doesn't seem to support passing a flag禁用Javascript的测试,尽管我必须警告您,我并没有那么做。
...我正在将NightmareJS和Testem与茉莉花一起使用。我不必使用那些,但是如果可能的话,我仍然想使用javascript。
另一种解决方案是使用NightwatchJS代替NightmareJS,它是一个使用ChromeDriver驱动测试的测试框架,该测试框架允许通过将prefs传递给Chromium来禁用JS。
我写了一个sample project作为非常基本的示例,说明了如何在禁用JS的情况下运行NightwatchJS测试。
项目使用以下配置禁用JS:
nightwatch.json
{
"test_settings" : {
"default" : {
"desiredCapabilities": {
"browserName": "chrome",
"chromeOptions" : {
"prefs" : {
"profile.managed_default_content_settings.javascript": 2
}
}
}
}
}
}
在上面的配置中,正是这条特殊的行传递给Chromium,这暗示着我们希望在NighwatchJS运行测试时禁用JS:
"profile.managed_default_content_settings.javascript": 2
话虽如此,我建议您更深入地了解Nightmare的文档/问题,以检查是否可以通过NightmareJS通过上面的推荐,而不是为了这个小怪癖而在NightwatchJS中重写所有测试。
答案 1 :(得分:1)
对于使用Nightmare JS的用户,创建噩梦实例时可以使用一个选项,但是某些功能似乎无法运行(例如evaluate
或exists
)。就我而言,我将页面另存为HTML,然后验证HTML是否存在。也可以保存屏幕截图或pdf,以验证正确的输出。
const nightmare = require('nightmare')
const fs = require('fs')
const browser = nightmare({
webPreferences: {
javascript: false
}
})
describe('Page with Javascript Off', () => {
beforeAll((done) => {
browser.goto('http://localhost:8080')
.html('./tests/no-js-result.html', 'HTMLOnly')
.then(() => done())
})
it('should show page when JS is disabled', (done) => {
fs.readFile('./tests/no-js-result.html', 'utf8', function(err, html){
if (err) fail('Could not read no-js-result.html')
expect(html).toContain('<h1>Javascript Disabled</h1>')
done()
})
})
})