标签: webdriver-io

WebdriverIO:检索浏览器日志记录

根据WebdriverIO-Dokumentation,我可以将浏览器控制台日志记录的输出集成到 webdriverio-logging 中。我的电话是然后browser.getLogs('browser')。但是,仅检索使用 console.warn() 发出的日志消息。所有 console.log() 消息都将被忽略。我如何管理它并将所有控制台消息包含到我的 webbriverio 报告中?

logging selenium google-chrome webdriver-io

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

如何将WebdriverIO的浏览器对象传递给SeleniumWebDriverHarnessEnvironment以用于线束加载器(@angular/cdk/testing)

由于 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)

webdriver webdriver-io angular angular-cdk

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

无法在模块、Typescript、WebdriverIO 外部使用导入语句

先谢谢您的帮助。

这个问题似乎在其他地方被问过并得到回答,但我相信我已经尝试了所有这些解决方案,但未能取得真正的进展。

我正在尝试为 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.conf.js
  • tsconfig
  • package.json和我的自定义 Reporterwdio

相关文件片段:

wdio.conf.js

//const WebdriverTestrailsReporter = require('./src/test/ui/WebdriverTestrailsReporter.js'); …
Run Code Online (Sandbox Code Playgroud)

javascript node.js typescript webdriver-io

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

将 Animejs 与 WebDriver 一起使用 > ReferenceError:NodeList 未定义

用于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)

javascript webdriver-io animejs

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

WebdriverIO-拍摄整页截图

我正在尝试使用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

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

如何在webdriver.io中以32位模式启动IE

我在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位驱动程序默认情况下...任何帮助将不胜感激@ :-)

selenium node.js cucumberjs webdriver-io

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

将ChromeDriver与不带Selenium的WebDriverIO一起使用

我想用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']- 但它似乎没有生效.

selenium google-chrome webdriver webdriver-io

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

使用 addCommand (webdriverio) 添加自定义命令时出现 ts 错误

我正在使用 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代码是正确的),并且测试运行良好。我的问题是我该如何解决这个问题?

typescript webdriver-io

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

如何在独立模式下调试 webdriverio?

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未准备好并且在调试移动到下一行时未定义。

javascript selenium node.js webdriver-io

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

如何在 VS Code 上获得 WebdriverIO 自动完成功能

有没有办法让 VS Code 的 webdriverio 自动完成功能?

其他代码编辑器(例如 Intellij)提供类似“设置”->“首选项”->“语言和框架”->“JavaScript”->“库”之类的内容,我们可以从那里添加带有 webdriverio 命令的目录

我怎样才能用 VS Code 做类似的事情?

webdriver-io

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