我正在编写一个守夜代码,在使用下面给定的代码段无法有效地找到元素的情况下。我倾向于找到的元素以类popover__list-item
的形式给出。我不确定我是否使用正确的方法。如何使元素可见?
这是我们开发的网站。
“第二步”:
function (client) {
client
.waitForElementVisible('.user-info', 6000)
.assert.containsText('.user-info', 'Salvin Thomas')
.pause(2000)
.click('.user-info')
.pause(2000)
.waitForElementVisible('input[class="popover__list-item"]', 40000)
.assert.containsText('input[class="popover__list-item"]', 'Log out')
}
预期结果是弹出带有注销和帐户选项的弹出窗口作为列表项,然后从中单击注销选项。
答案 0 :(得分:0)
您应该使用WebDriver协议API
function setSelectorbyDOM() {
let elements = null;
client.execute(selector => {
var arr = [];
var selectors = document.querySelectorAll(selector);
for (var i = 0; i < selectors.length; i++) {
if (selectors[i].clientHeight) {
arr.push(selectors[i])
}
}
return arr;
}, ['.user-info', 'css selector'], results => {
elements = results.value;
});
if (!elements.length) throw new Error('Element not found.Please check DOM.');
return elements;
}
function clickByDOMSelector() {
let action = null;
const elements = setSelectorbyDOM();
for (let i = 0; i < elements.length; i++) {
client.elementIdClick(elements[i].ELEMENT, res => {
action = res.status;
});
if (action !== 0) throw new Error(`Couldn't click to button!`)
}
return true;
}
const click = clickByDOMSelector();
以此类推...
致谢!