ReferenceError:未定义By - webdriverIO

时间:2017-11-15 07:21:35

标签: javascript selenium-webdriver webdriver-io

代码:

var assert = require('assert');
describe('webdriver.io api page', function() {
    it('should open login page', function () {
        browser.url('/login');
        browser.pause(10000);
})

it('Should enter login details and submit', function() {

    browser.pause(10000);
    browser.element(By.xpath("//input[@type='text' and @aria-label='user name']")).sendKeys("mikestr");

})
});

我是webdriverIO的新手并尝试使用xpath找到用户名文本框,但它会引发我的错误。我浏览了许多webdriverIO材料,但还没有得到解决方案。

3 个答案:

答案 0 :(得分:2)

WebdriverIO的选择器与Selenium Webdriver不同。它将接受" XPath"的字符串值。或" CSS"选择。 " By未定义"您看到的错误是因为它正在寻找一个" String"选择器的值。

文档: http://webdriver.io/guide/usage/selectors.html#CSS-Query-Selector

在您的情况下,您只需传递类似:

browser.element('"//input[@type='text' and @aria-label='user name']"')
       .setValue('mikestr')

或者你可以设置变量并传递一个变量,如:

var XPath = "//input[@type='text' and @aria-label='user name']"
browser.element(XPath).setValue('mikestr')

答案 1 :(得分:1)

定位器必须是字符串

要设置值,您可以使用setValue

browser.setValue("//input[@type='text' and @aria-label='user name']", 'mikestr');

答案 2 :(得分:0)

我在使用角度误差相同的By is not defined时遇到了另一个问题。对于可能会在这里出现的其他人,我的解决方案是添加导入

import { By } from "@angular/platform-browser";