【发布时间】:2019-08-21 11:18:40
【问题描述】:
当我在 JavaScript selenium 测试中找不到元素时,我无法轻松找出哪一行失败:
这是一个例子:
// test.js
const webdriver = require('selenium-webdriver');
const Builder = webdriver.Builder;
const By = webdriver.By;
describe('web driver', function() {
let driver;
beforeEach(function() {
return new Builder().forBrowser('chrome').build().then(function(_driver) {
driver = _driver;
});
});
it('should always be able to find the element', function() {
return driver.findElement(By.name('test-element'));
});
afterEach(function() {
return driver.quit();
});
});
当这样运行时:
npm install selenium-webdriver@4.0.0-alpha.1
npm install mocha@6.0.2
nvm install 8.15.1
nvm use 8.15.1
node_modules/.bin/mocha test.js
我收到以下错误:
NoSuchElementError: no such element: Unable to locate element: {"method":"css selector","selector":"*[name="test-element"]"}
(Session info: chrome=72.0.3626.121)
(Driver info: chromedriver=2.42.591071 (0b695ff80972cc1a65a5cd643186d2ae582cd4ac),platform=Linux 4.15.0-46-generic x86_64)
at Object.checkLegacyResponse (node_modules/selenium-webdriver/lib/error.js:585:15)
at parseHttpResponse (node_modules/selenium-webdriver/lib/http.js:533:13)
at Executor.execute (node_modules/selenium-webdriver/lib/http.js:468:26)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:189:7
这在这个测试中很容易理解,但在较长的测试中真的很难,因为它没有给我一行测试,而且我经常不止一次地搜索同一个元素。
有没有办法解决这个问题?
(我的实际测试是使用 async/await,但我没有做这个例子,问题是一样的)
【问题讨论】:
-
如果您使用bluebird 来获取异步代码的正确堆栈跟踪会怎样?
-
我刚试了下,没解决。非 selenium 断言失败的堆栈跟踪已经足够好,而且 selenium 的堆栈跟踪在我的脚本中都没有行号。
标签: javascript node.js selenium selenium-webdriver async-await