根据WebdriverIO-Dokumentation,我可以将浏览器控制台日志记录的输出集成到 webdriverio-logging 中。我的电话是然后browser.getLogs('browser')。但是,仅检索使用 console.warn() 发出的日志消息。所有 console.log() 消息都将被忽略。我如何管理它并将所有控制台消息包含到我的 webbriverio 报告中?
由于 Protractor 已被弃用,我刚刚开始使用 WebdriverIO。
之前我们使用 Angular 的 Component Harness 进行测试。当我们尝试迁移现有测试时,我们发现 Angular 团队实现了“@angular/cdk/testing/selenium-webdriver”作为 Protractor-harness 环境的替代品。
当我将 WebdriverIO 浏览器的对象传递给 SeleniumWebDriverHarnessEnvironment 时,我现在遇到了拦截器。有人可以帮助我找到解决方案吗?
import { SeleniumWebDriverHarnessEnvironment } from "@angular/cdk/testing/selenium-webdriver";
const harnessLoader: HarnessLoader = SeleniumWebDriverHarnessEnvironment.loader(driver);
Run Code Online (Sandbox Code Playgroud)
我收到错误如下
'TypeError: root(...).findElements is not a function'.
at .\src\cdk\testing\selenium-webdriver\selenium-web-driver-harness-environment.ts:43:14
Run Code Online (Sandbox Code Playgroud) 先谢谢您的帮助。
这个问题似乎在其他地方被问过并得到回答,但我相信我已经尝试了所有这些解决方案,但未能取得真正的进展。
我正在尝试为 webdriverIO 创建一个自定义报告器。但是,当所有导入都运行时,我收到以下错误:
语法错误:无法在模块外部使用 import 语句
如果我尝试执行文件顶部的导入语句wdio.conf,则会出现上述错误import WebdriverTestrailsReporter。我可以通过使用 require 来解决这个问题,但是在import WDIOReporter from '@wdio/reporter'.
当我尝试添加"type": "module"到 package.json 时,出现新错误:
错误[ERR_REQUIRE_ESM]:必须使用导入加载ES模块:/Users/XXXXX/WebstormProjects/integration_test_framework/wdio.conf.local.js 不支持ES模块的require()。/Users/XXXXX/WebstormProjects/integration_test_framework/node_modules/@wdio/config/build/lib/ConfigParser.js 中的 /Users/XXXXX/WebstormProjects/integration_test_framework/wdio.conf.local.js 的 require() 是一个 ES 模块文件,如下所示它是一个 .js 文件,其最近的父 package.json 包含 "type": "module" ,它将该包范围内的所有 .js 文件定义为 ES 模块。相反,将 wdio.conf.local.js 重命名为以 .cjs 结尾,更改所需代码以使用 import(),或从 /Users/n1531435/WebstormProjects/integration_test_framework/package.json 中删除 "type": "module"。
使用 cjs 文件扩展名让我回到开始时出现的导入错误。我无法更改所需的代码,因为它存在于我的项目中WDIO ConfigParser,而不是我的项目中。
我还对 tsconfig 中的值进行了相当多的修改,包括目标值(es2015、es2017),但似乎没有任何效果。有任何想法吗?
据我了解,此设置中有 4 个相关文件。我将它们复制如下:
wdio相关文件片段:
wdio.conf.js
//const WebdriverTestrailsReporter = require('./src/test/ui/WebdriverTestrailsReporter.js'); …Run Code Online (Sandbox Code Playgroud) 用于webdriverio创建 SaaS 测试。我想添加鼠标动画,animejs以便我可以记录测试以生成操作视频。
在我的webdriverio测试中(addAdditionalUsers.spec.js),我有
await closeBtn.animateMouse(); //line 34
Run Code Online (Sandbox Code Playgroud)
我animateMouse从以下进口functions.js:
export async function animateMouse() {
await browser.addCommand('animateMouse', async function() {
await this.waitForExist();
const rect = await browser.execute(elem => elem.getBoundingClientRect(), await this);
const targetX = rect.x;
const targetY = rect.y;
anime({ //line 32
targets: '#webdriver-mouse',
left: targetX + 'px',
top: targetY + 'px',
duration: 1000, // Duration of the animation in milliseconds
easing: 'linear'
})
}, true);
}
Run Code Online (Sandbox Code Playgroud)
当我运行测试时,我收到一个错误:
ReferenceError: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用WebdriverIO截取整个页面的屏幕截图。
我读过,最好的方法是使用WebdriverCSS增强我的WebdriverIO流。WebdriverCSS自动截图整个页面?
问题是WebdriverCSS对我不起作用。我认为是因为它尚未与兼容webdriverio@3.0.x。
有什么办法可以使它起作用,或者可以使用其他解决方案?
我的代码:(这是生产什么,但在回调中未定义的值)
// Initialize WebdriverCSS for `client` instance
require('webdrivercss').init(driver, {
// example options
screenshotRoot: '../../screenshots',
failedComparisonsRoot: '../../screenshots/diffs',
misMatchTolerance: 0.05
});
// ...
// driver gets initialized and url opened
// ...
driver.webdrivercss('page', {
name: 'body',
elem: 'body'
}, function(err, res) {
// here the values of err and res are always undefined
})
.saveScreenshot('../../screenshots/webdrivercsstest.png');
// the screenshot works, but it's not full page
Run Code Online (Sandbox Code Playgroud)
!EDIT: 这是Chromium中的一个已知BUG,很可能不会修复。请参阅此链接以获取更多详细信息。
selenium automated-tests selenium-webdriver webdriver-io wdio-v4
我在selenium-standalone上使用gulp-wdio npm pakage运行WebDriver.io测试
我在gulp中运行的代码是:
gulp.task('e2e', function () {
return gulp.src('wdio.conf.js')
.pipe(wdio({
wdio: {
specs: './test/features/**/*.feature'
}
}));
});
Run Code Online (Sandbox Code Playgroud)
我的wdio.conf.js以这种方式定义浏览器:
capabilities: [
{
browserName: 'internet explorer',
version: 'ANY'
}
],
Run Code Online (Sandbox Code Playgroud)
怎么打字都很慢,我在互联网上发现运行32位版本的网络驱动程序解决了这个问题,我怎么也找不到如何配置功能或其他一些地方来运行IE32位驱动程序默认情况下...任何帮助将不胜感激@ :-)
我想用ChromeDriver驱动我的webdriverio测试,而不是通过Selenium.这看起来应该是可能的,但我不知道从哪里开始.
我试过像这样启动ChromeDriver
chromedriver
Run Code Online (Sandbox Code Playgroud)
然后在另一个窗口中我启动了这样的wdiotestrunner:
$(npm bin)/wdio
Run Code Online (Sandbox Code Playgroud)
如果什么都不做,这将只会让我
ERROR: connect ECONNREFUSED 127.0.0.1:4444
Run Code Online (Sandbox Code Playgroud)
改变端口wdio.conf.js以匹配ChromeDriver的端口9515得到了我
ERROR: unknown command: wd/hub/session
Run Code Online (Sandbox Code Playgroud)
我已经尝试添加--url-base=wd/hub/sessionchromedriver启动选项,但它只是将错误更改为
ERROR: unhandled request
Run Code Online (Sandbox Code Playgroud)
不过,不行.我已将serviceswdio 的属性设置为['chromedriver']- 但它似乎没有生效.
我正在使用 addCommand 添加函数,并在使用时出现以下错误:
[ts] Property 'WaitForElementsAmount' does not exist on type 'Client<void>'.
Run Code Online (Sandbox Code Playgroud)
例如:
browser.addCommand("test" , () => {console.log("test"); })
browser.test();
Run Code Online (Sandbox Code Playgroud)
最后一行会有错误。
它确实有效(js代码是正确的),并且测试运行良好。我的问题是我该如何解决这个问题?
http://webdriver.io/guide/getstarted/modes.html
我绝对会尝试使用 Chromedriver 调试 webdriverio 测试。您根本无法单步执行代码,因为 webdriverio 命令是异步的,并且浏览器会话与测试不同步。
这是令人沮丧的,因为阅读文档,似乎您需要一个像 Chai 或 wdio 这样的测试框架来生成测试,但这似乎只是为了拥有程序同步命令而需要做很多工作。
我只需要使用 webdriverio 抓取一些网站,但是使用 Chrome devtools 调试这个异步命令太难了。
有没有办法强制 webdriverio 同步运行?
前任)
var loadedPage = webdriverio.remote(options).init().url('https://google.com');
除了loadedPage未准备好并且在调试移动到下一行时未定义。
有没有办法让 VS Code 的 webdriverio 自动完成功能?
其他代码编辑器(例如 Intellij)提供类似“设置”->“首选项”->“语言和框架”->“JavaScript”->“库”之类的内容,我们可以从那里添加带有 webdriverio 命令的目录
我怎样才能用 VS Code 做类似的事情?
webdriver-io ×10
selenium ×5
javascript ×3
node.js ×3
typescript ×2
webdriver ×2
angular ×1
angular-cdk ×1
animejs ×1
cucumberjs ×1
logging ×1
wdio-v4 ×1