ReferenceError: By не определено - webdriverIO
Код:
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, но пока не нашел решения.
2 ответа
Селекторы WebdriverIO отличаются от Selenium Webdriver. Он будет принимать значение String для селекторов "XPath" или "CSS". Вы видите ошибку "По не определено", потому что она ищет "селекторное" значение селектора.
Документация: http://webdriver.io/guide/usage/selectors.html
В вашей ситуации вам нужно только передать что-то вроде:
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')
Локатор должен быть строкой
Для установки значения вы можете использовать setValue
browser.setValue("//input[@type='text' and @aria-label='user name']", 'mikestr');
У меня была другая проблема с использованием угловых с тем же By is not defined
ошибка. Для кого-то еще, кто может оказаться здесь, решение для меня было добавить импорт
import { By } from "@angular/platform-browser";