首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用nodejs的selenium web驱动程序获取子元素的计数

如何使用nodejs的selenium web驱动程序获取子元素的计数
EN

Stack Overflow用户
提问于 2022-07-09 07:08:16
回答 1查看 188关注 0票数 1

我找了很多地方,但没有得到答案。

这是我的html:

代码语言:javascript
复制
    <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的计数。

我可以达到这一点,但我被困在了:

代码语言:javascript
复制
let xyz = driver.findElements(By.className(".acp-wrap js-acp-wrap>div"));
EN

回答 1

Stack Overflow用户

发布于 2022-07-09 12:01:01

您需要使用By.css来获取元素:.acp-wrap js-acp-wrap > div。另外,您的选择器是不正确的。当您按类选择元素时,需要将句点放在类名之前:.acp-wrap.js-acp-wrap > div (也移除acp-wrapjs-acp-wrap之间的空格)。

下面是如何获得该元素:

代码语言:javascript
复制
let xyz = driver.findElements(By.css(".acp-wrap.js-acp-wrap > div"));

现在,要获得计数,您可以获得xyzxyz属性。但是由于driver.findElement返回一个承诺,所以您需要使用异步等待。您可以创建一个函数:

代码语言:javascript
复制
async function getCount() {
  let xyz = await driver.findElements(By.css(".acp-wrap.js-acp-wrap > div"));
  const count = xyz.length;
  return count;
}

编辑

当您调用函数时:

代码语言:javascript
复制
getCount().then(function(count) {
  // your stuff there
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72919597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档