标签: webdriver-io

在webdriver.io中查找父元素

我在原始webdriver中看到了几个使用getAttribute('xpath')并附加到'/ ..'的解决方案,但webdriver.io没有xpath属性,所以我无法使用它.关于如何抓取父元素的任何想法?

我试图测试的情况是在引导程序布局中,实际上我正在尝试检查的类的元素是上面的一个.它看起来像这样:

<div class="form-group">
  <input class="form-control" type="text" name="username">
  <other stuff>
</div>
Run Code Online (Sandbox Code Playgroud)

我通过driver.element选择("input [name ='username'"],但错误类实际上击中了div

<div class="form-group error">
  <input class="form-control" type="text" name="username">
  <other stuff>
</div>
Run Code Online (Sandbox Code Playgroud)

所以我需要检查div本身是否有错误类,而不是我能找到的输入(div上没有uniques)

任何帮助将不胜感激.

webdriver-io

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

如何使用WebdriverIO上传文件

我正在尝试将带有selenium-webdriver gem的Ruby中的以下代码移植到带有WebdriverIO的Node.js:

@webdriver.navigate.to "https://imgur.com/upload"
element = @webdriver.find_element(:id, 'global-files-button')
element.send_keys("C:\\test\\image.png")
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,代码非常简单:导航到URL,找到输入,设置文件路径,并按预期工作,选择要上载的文件.

这是我的移植版本:

describe('User can upload', () => {
  it('select file', () => {
    browser.url("https://imgur.com/upload");
    browser.waitForExist('#global-files-button');
    $('#global-files-button').keys("C : \\ t e s t \\ i m a g e . p n g".split(" "));
  });
});
Run Code Online (Sandbox Code Playgroud)

不幸的是,这个测试没有设置路径,我无法找到一个使用wdio上传这样的文件的工作示例,文档让我猜测.任何建议非常感谢.

我知道chooseFile和uploadFile,但我正在使用云平台来运行我的wdio测试,但它们似乎无法可靠地工作.

webdriver node.js selenium-webdriver webdriver-io

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

如何告诉 webdriver-io 使用 firefox 开发人员版?

如何告诉 webdriver-io 使用 Firefox 开发人员版而不是普通的 Firefox?我需要使用普通 Firefox 不支持的 CSS4 选择器。我阅读了文档,但找不到该选项。

javascript firefox selenium node.js webdriver-io

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

如何更改 webdriverio 的浏览器语言

我想更改浏览器语言。但它不起作用。显示默认浏览器语言..

capabilities: [{
    browserName: 'chrome',
    chromeOptions: {
        args: ['--lang=ja']
    }
}],
Run Code Online (Sandbox Code Playgroud)

webdriver-io chrome-options

5
推荐指数
2
解决办法
1719
查看次数

在 Safari 中处理命令时发生未知的服务器端错误。

在 Safari 10.1 中尝试将文本框的值设置为空白时出现此错误。

使用 WebdriverIO:4.6.2

场景:文本框中已有文本。必须将该文本框设为空白才能重置搜索。

代码片段:

$(elementSelector).setValue('');
browser.waitUntil(() =>{
  //Some conditions to meet after reset
});
Run Code Online (Sandbox Code Playgroud)

错误:

An unknown server-side error occurred while processing the command. (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 11 milliseconds
Build info: version: '3.0.1', revision: '1969d75', time: '2016-10-18 09:48:19 -0700'
System info: host: 'mac-185-44-130-79.browserstack.com', ip: '185.44.130.79', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.12.5', java.version: '1.8.0_51'
Driver info: org.openqa.selenium.safari.SafariDriver
Capabilities [{applicationCacheEnabled=true, rotatable=false, databaseEnabled=true, handlesAlerts=true, version=12604.1.22, cleanSession=true, …
Run Code Online (Sandbox Code Playgroud)

selenium safaridriver webdriver-io

5
推荐指数
0
解决办法
832
查看次数

如何适当地重用 mocha 测试的描述块?

我有一个以不同模式运行的应用程序(将其视为针对不同平台运行并使用不同协议),其中一个应用程序在每次打开页面时都有很长的加载时间。还有一些其他小的变化,但所有这些都可以使用 wdio 的设置变量来处理。

目前,我为应用程序的每个部分都有一个测试文件(带有描述)。如果正在测试的配置之一没有这么长的等待时间,那会很好。无论如何,我决定处理这个测试用例,将它全部处理在一个文件中,这些文件都将在同一页面上。

无论如何,与其将我之前的所有测试复制并粘贴到这个大文件中,我想知道是否可以以某种方式重用它们,就好像它们是函数一样。

就像现在一样,我只是将东西包装在函数中,例如:

// test1.js
module.exports = function test1 () {
  describe('Test1', function () {
    var settings = {}

    before(function () {
     // do something
    })

    it('do something', function () {
      assert.ok(true)
    })
    it('do something else', function () {
          assert.ok(true)
    })
  })
}
Run Code Online (Sandbox Code Playgroud)

在另一个文件中,我们运行我们创建的每个函数:

test1 = require('./test1')
test2 = require('./test2')
...
test10 = require('./test10')
describe('Main Test', function () {
  test1()
  test2()
  ...
  test10()
}
Run Code Online (Sandbox Code Playgroud)

如果我能以某种方式选择在我的命令上运行哪些测试函数,这将解决我的 DRY 问题

wdio wdio/wdio.conf.js --specs wdio/test/spects/browser/test1.js

这显然行不通。

基本上我想要一个能够重用我的测试(描述块)的解决方案。我所做的是正确的道路吗?如果不是,应该怎么做?

javascript mocha.js selenium-webdriver webdriver-io e2e-testing

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

WebdriverIO browser.click 给出错误“其他元素会收到点击”。我该如何解决?

当我尝试运行它时,我从我的 webdriverIO selenium 代码中收到以下错误:

失败:未知错误:元素在点 (389, 709) 处不可点击。其他元素会收到点击:< html lang="en" >...</html >

这是相关的代码:

const checkboxSelector = 
    getAttributeSelector('data-test', 'manual-checkbox');
browser.click(checkboxSelector);
Run Code Online (Sandbox Code Playgroud)

我如何摆脱这个错误?

- - 附加信息 - -

测试正在使用 chromedriver 运行:

var desktop = exports.desktop = [{
    browser: 'Chrome',
    os: 'Windows',
    os_version: '7'
}];
Run Code Online (Sandbox Code Playgroud)

javascript selenium integration-testing selenium-webdriver webdriver-io

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

Window10 上的 Webdriverio 错误 basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") ^^^^^^^ SyntaxError: missing ) 在参数列表之后

当我尝试运行 npm run 然后我得到以下错误我使用以下配置:
webdriverio v4.14.4

node v8.5

npm v5.3

Windows 10

下面是我的配置文件

"scripts":{
"web": "node node_modules/.bin/wdio ./test/config/suite.web.conf.js",
}
Run Code Online (Sandbox Code Playgroud)

以下错误:

> $ npm run web
>  tconnect-uiautomation@1.1.5 web >C:\Users\user\Downloads\webdriverioFramework\webdriverioFramework 
>ENV=preprod node node_modules/.bin/wdio ./test/config/suite.web.conf.js

C:\Users\user\Downloads\webdriverioFramework\webdriverioFramework\node_modules\.bin\wdio:2
> basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
>           ^^^^^^^
> 
> SyntaxError: missing ) after argument list
>     at createScript (vm.js:74:10)
>     at Object.runInThisContext (vm.js:116:10)
>     at Module._compile (module.js:588:28)
>     at Object.Module._extensions..js (module.js:635:10)
>     at Module.load (module.js:545:32)
>     at tryModuleLoad (module.js:508:12)
>     at Function.Module._load (module.js:500:3) …
Run Code Online (Sandbox Code Playgroud)

javascript selenium-webdriver webdriver-io webdriver-io-v4

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

在詹金斯管道中创建硒后端

我有一组在 jenkins 中运行的 webdriver.io 测试。它们运行在由外部公司在 k8s 中管理的 selenium 网格上。我想对我的 selenium 后端有更多的控制,所以我试图找到一种方法来在我的 jenkins 管道中设置一个 selenium 后端。不过,我缺乏 docker/k8s 网络知识让我望而却步。

这大概是我的管道的样子:

  agent {
    kubernetes {
      defaultContainer 'jnlp'
      yaml """
        apiVersion: v1
        kind: Pod
        spec:
            containers:
              - name: node
                image: node:12.14.1
                command:
                - cat
                tty: true
      """
    }
  }
  stages {
    stage('Checkout codebase') {
      // do checkout
      }  
    }
    stage('Build') {
      steps {
        container('node') {
            sh '''
                npm install --production
            '''
        }
      }
    }
    stage('Test-Mocha') {
      steps {
        container('node') {
            sh "node_modules/.bin/wdio ./test/config/wdio.conf.js --spec …
Run Code Online (Sandbox Code Playgroud)

selenium docker webdriver-io kubernetes jenkins-pipeline

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

如何在 JavaScript/TScript 中断言数组包含子字符串

我正在尝试检查数组中是否存在 SubString。在测试中,我断言使用:

expect(classList).toContain('Rail__focused')
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Error: expect(received).toContain(expected // indexOf
Expected value: "Rail__focused"
Received array: ["Rail__item__3NvGX", "Rail__focused__3bGTR", "Tile__tile__3jJYQ", "Tile__wide__1GuVb", "Tile__animated__3H87p", "Tile__active__1mtVd"]
Run Code Online (Sandbox Code Playgroud)

这就是我想要实现并希望通过的

expect(classList).toContain('Rail__focused')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

javascript typescript webdriver-io

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