A fork of https://github.com/ueokande/vim-vixen
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.2 KiB
41 lines
1.2 KiB
class Console { |
|
constructor(session) { |
|
this.session = session; |
|
} |
|
|
|
async sendKeys(...keys) { |
|
let input = await this.session.findElementByCSS('input'); |
|
input.sendKeys(...keys); |
|
} |
|
|
|
async currentValue() { |
|
return await this.session.executeScript(() => { |
|
let input = document.querySelector('input'); |
|
return input.value; |
|
}); |
|
} |
|
|
|
async getCompletions() { |
|
return await this.session.executeScript(() => { |
|
let items = document.querySelectorAll('.vimvixen-console-completion > li'); |
|
if (items.length === 0) { |
|
throw new Error('completion items not found'); |
|
} |
|
|
|
let objs = []; |
|
for (let li of items) { |
|
if (li.classList.contains('vimvixen-console-completion-title')) { |
|
objs.push({ type: 'title', text: li.textContent.trim() }); |
|
} else if ('vimvixen-console-completion-item') { |
|
let highlight = li.classList.contains('vimvixen-completion-selected'); |
|
objs.push({ type: 'item', text: li.textContent.trim(), highlight }); |
|
} else { |
|
throw new Error(`unexpected class: ${li.className}`); |
|
} |
|
} |
|
return objs; |
|
}); |
|
} |
|
} |
|
|
|
module.exports = Console;
|
|
|