在运行量角器-黄瓜框架时获取无效的定位器。我已经建立了具有所需依赖关系的量角器黄瓜框架。
在出现此错误之前,量角器无法找到特征文件的步骤定义。因此,我将黄瓜版本从4.2.1降级到1.3.3,即使我已经为按钮类(.button-large.button-primary提供了有效的定位器),我也能找到步骤定义,但得到了无效的定位器错误。 has-shield.has-shadow)。
export default function() {
this.Given(/^I am on the "([^]*)" page$/, { timeout: 40 * 1000 }, async function homepage(page) {
console.log(page);
await browser.get('http://www.angularjs.org');
const ele = await element(by.css('.button-large.button-primary.has-shield.has-shadow'));
return element(ele).click();
});
}```
Getting below error
``` TypeError: Invalid locator
at Object.check [as checkedLocator] (/mnt/c/Angular/node_modules/protractor/node_modules/selenium-webdriver/lib/by.js:275:9)
at thenableWebDriverProxy.findElements (/mnt/c/Angular/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:1041:18)
at ptor.waitForAngular.then (/mnt/c/Angular/node_modules/protractor/built/element.js:159:44)
at process._tickCallback (internal/process/next_tick.js:68:7)```
Protractor should run above code as it is valid locator.
Package.json
{
"name": "test",
"version": "1.0.0",
"description": "test",
"main": "config.js",
"dependencies": {
"babel-cli": "6.26.0",
"babel-core": "6.26.3",
"babel-loader": "6.4.1",
"babel-plugin-add-module-exports": "0.2.1",
"babel-plugin-transform-es2015-modules-commonjs": "6.26.2",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-polyfill": "^6.26.0",
"babel-preset-es2015": "6.24.1",
"babel-preset-stage-2": "6.24.1",
"babel-register": "6.26.0",
"chai": "^4.2.0",
"chai-as-promised": "^7.1.1",
"chai-smoothie": "^0.3.2",
"chromedriver": "2.40.0",
"cucumber": "1.3.3",
"protractor": "^5.3.2",
"protractor-cucumber-framework": "^5.0.0",
"protractor-helper": "^3.7.8",
"selenium-webdriver": "2.53.3"
},
"scripts": {
"test": "protractor config.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"babel-core": "^6.26.3"
}
}
答案 0 :(得分:0)
发生这种情况是因为您试图将ElementFinder
传递给element
函数。
在此行:
return element(ele).click();
尝试一下:
export default function() {
this.Given(/^I am on the "([^]*)" page$/, { timeout: 40 * 1000 }, async function homepage(page) {
console.log(page);
await browser.get('http://www.angularjs.org');
return await element(by.css('.button-large.button-primary.has-shield.has-shadow')).click();
});
}
或者如果您想作为示例:
export default function() {
this.Given(/^I am on the "([^]*)" page$/, { timeout: 40 * 1000 }, async function homepage(page) {
console.log(page);
await browser.get('http://www.angularjs.org');
const ele = await element(by.css('.button-large.button-primary.has-shield.has-shadow'));
return ele.click();
});
}
答案 1 :(得分:0)
尝试以下选项
const ele = element(by.css('.button-large.button-primary.has-shield.has-shadow'));
await ele.click();
希望它对您有帮助