如何使用浏览器对象从elementId
获取元素的内部HTML?
WebdriverIO API中是否有类似elementIdHtml
的内容?
v4 的getHTML链接返回 403禁止访问。
我的目标是我需要从elementId中获取所有a._3cnp
中的所有文本
示例html
<div class="container">
<a class="_3cnp">first link</a>
<a class="_3cnp">second link</a>
<a class="_3cnp">third link</a>
</div>
需要将其转换为[“第一链接”,“第二链接”,..]
我已经拥有.container
elementId
这就是我所做的
.then(() => browser.elementIdElements(someElementId, 'a._3cnp'))
.then(buttonElem => {
console.log('->', buttonElem)
console.log('-->', buttonElem.getHTML)
buttonElem.getHTML().then(x => console.log('---->', x))
return buttonElem.value
})
elementIdElements的结果是 buttonElem
{ sessionId: '2e2f144c8895a03da1b8df92f4613a33',
status: 0,
value:
[ { ELEMENT: '0.6603119466268468-24',
'element-6066-11e4-a52e-4f735466cecf': '0.6603119466268468-24' } ],
selector: 'a._3cnp' }
但是buttonElem.getHTML
是undefined
使用botium-webdriverio-connector中的webdriverio独立安装
答案 0 :(得分:1)
LE:
相应地将代码更改为以下内容:
.then(() => browser.elementIdElements(someElementId, 'a._3cnp'))
.then(buttonElem => {
// buttonElem's 'value' will contain a list of all the matching elements
// thus, you have to call getHTML() on each item from 'value'
// the following will return the HTML of the first matching element
console.log('\nPrint element HTML: ' + buttonElem.value[0].getHTML());
return buttonElem.value[0].getHTML();
})
更好的方法是在它们之间循环并打印HTML:
.then(() => browser.elementIdElements(someElementId, 'a._3cnp'))
.value.forEach(buttonElem => {
console.log('\nPrint element HTML: ' + buttonElem.getHTML());
return buttonElem.getHTML();
})
.getHTML()
属性的作用域为所有ELEMENT
对象。为了采用更具说服力的方法,我将认为任务是操作HTML代码,该操作是从无序列表({ {1}}。
因此您可以执行以下操作:
<li>
(这将返回所有<ul>
的HTML代码列表)browser.getHTML('ul.ourList li.ourListItems')
(这将返回第一个<li>
HTML代码)browser.element('ul.ourList li.ourListItems').getHTML()
(这等效于上面的命令,只是宽松版本)如果您需要遍历所有<li>'s
并获取HTML,请执行以下操作:
$('ul.ourList li.ourListItems').getHTML()
其中<li>
是具有以下格式的对象:
let locator = 'ul.ourList li.ourListItems';
browser.elements(locator).value.forEach(elem => {
let elemHTML = elem.getHTML();
console.log( JSON.stringify(elemHTML) );
elemHTML.doSomethingWithIt();
})