我找了很多地方,但没有得到答案。
这是我的html:
<form id="search_form_homepage" >
...
<div class="search__autocomplete" style="display: block;">
<div class="acp-wrap js-acp-wrap">
<div class="acp" data-index="0"><span class="t-normal">elephant</span>cheap auto</div>
<div class="acp" data-index="1"><span class="t-normal">elephant</span>asia</div>
...
...
<div class="acp" data-index="2"><span class="t-normal">elephant</span>africa</div>
</div>
...
</div>
</form>我只需要用类<div>获取div中当前的acp-wrap js-acp-wrap的计数。
我可以达到这一点,但我被困在了:
let xyz = driver.findElements(By.className(".acp-wrap js-acp-wrap>div"));发布于 2022-07-09 12:01:01
您需要使用By.css来获取元素:.acp-wrap js-acp-wrap > div。另外,您的选择器是不正确的。当您按类选择元素时,需要将句点放在类名之前:.acp-wrap.js-acp-wrap > div (也移除acp-wrap和js-acp-wrap之间的空格)。
下面是如何获得该元素:
let xyz = driver.findElements(By.css(".acp-wrap.js-acp-wrap > div"));现在,要获得计数,您可以获得xyz的xyz属性。但是由于driver.findElement返回一个承诺,所以您需要使用异步等待。您可以创建一个函数:
async function getCount() {
let xyz = await driver.findElements(By.css(".acp-wrap.js-acp-wrap > div"));
const count = xyz.length;
return count;
}编辑
当您调用函数时:
getCount().then(function(count) {
// your stuff there
});https://stackoverflow.com/questions/72919597
复制相似问题