javascript - 如何在Selenium JS中获取子节点的数量

标签 javascript selenium selenium-webdriver

我正在为我的一个小项目抓取一个网站,我想获取教师姓名的数量。
名称位于 <tr><tbody> 下的标签标签。
我想将教员姓名插入列表中,现在我正在使用网站上当前的教员数量进行硬编码。目前还可以,但数字可能会改变,如果他们添加更多功能,我希望我的代码能够工作。

var listOfFaculties = [];
for(var i = 2; i <= 18; i++){ // start with inedx 2 and go to 18 (from the first to the last faculty on the site) -- HARDCODED
    await driver.findElement(By.xpath(getXPath(i))).getText().then(function(value) {
        listOfFaculties.push({
            Faculty: value
        });
    });
}
function getXPath(num){
    return "//div[@id = 'main']/center[2]/font[@class='normal']/table/tbody/tr[" + num + "]/td[1]";
}

有没有办法获取<tbody>的子节点数量标签?因此我可以将数字放入 for 循环中,而无需对边界进行硬编码。

最佳答案

使用WebElement列表来获取教师长度。

你修改后的代码应该是这样的 -

List<WebElement> elements = driver.findElements(By.xpath("//div[@id = 'main']/center[2]/font[@class='normal']/table/tbody/tr"));

var listOfFaculties = [];
for(var i = 2; i < elements.size(); i++){ 
    await driver.findElement(By.xpath(getXPath(i))).getText().then(function(value) {
        listOfFaculties.push({
            Faculty: value
        });
    });
}

function getXPath(num){
    return "//div[@id = 'main']/center[2]/font[@class='normal']/table/tbody/tr[" + num + "]/td[1]";
}

关于javascript - 如何在Selenium JS中获取子节点的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50078911/

相关文章:

javascript - 使用 fetch 发布 JSON 数据

python - 在带有 Chromium 的 Raspberry Pi 上使用 Selenium

selenium - 无法通过 type 属性或 xpath 定位登录框

java - 在节点机器上执行批处理文件 - Selenium Grid

javascript - 没有 CSS 资源可以安全地使用 jQuery-UI 吗?

javascript - 在条件中使用未定义的属性时,流程不报告错误

post - 是否可以在 Selenium 中捕获 POST 数据?

ruby - 将元素保存在 yml 文件中更好吗?

selenium - 我应该在每次基于 Selenium 的自动化测试后退出浏览器吗?

javascript - 对象键的数字顺序从 0 javascript 重新排列