You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Protractor获取表格中Ernst对应的Code字段数据

获取表格中含Ernst的公司对应Code的Protractor实现方案

首先,先把你提供的HTML表格转换成更易读的Markdown格式:

CompanyContactCode
Alfreds FutterkisteMaria AndersTHK-ASA-AKK
Centro comercial MoctezumaFrancisco ChangKAL-ASA-AKK
Ernst HandelRoland MendelMAK-ASA-AAKS
Island TradingHelen BennettABC-ASA-AKK
Laughing Bacchus WinecellarsYoshi TannamuriBSA-ASA-AKK
Ernst Alimentari RiunitiGiovanni RovelliKAL-ASA-AKK

你的代码问题分析

你当前的脚本没输出内容,主要有两个问题:

  1. 拼写错误:elment应该是element——这个小笔误会导致代码逻辑直接中断
  2. 逻辑偏差:by.cssContainingText('td','Ernst')定位到的是包含"Ernst"的<td>单元格本身,而不是它所在的整行。你后续尝试找这个单元格下的td:nth-child(3),但这个单元格是该行的第一个子元素,它内部根本没有第3个<td>,自然拿不到内容。

可行的解决方法

我们需要先定位到包含Ernst的公司所在的行,再从每行中提取第3列的Code。这里给你几种实用的实现方式:

方法一:从目标单元格向上找父行

// 找到所有包含"Ernst"的公司单元格
element.all(by.cssContainingText('td', 'Ernst')).each(function(companyCell) {
  // 通过XPath获取当前单元格所在行的第3个td
  companyCell.element(by.xpath('../td[3]')).getText().then(function(code) {
    console.log('匹配到的Code:', code);
  });
});

这里的../td[3]表示“当前元素的父元素(也就是<tr>)下的第3个<td>”,能精准定位到每行的Code列。

方法二:直接定位符合条件的整行

// 用XPath直接筛选出第一列含"Ernst"的行
element.all(by.xpath('//tr[td[1][contains(text(), "Ernst")]]')).each(function(row) {
  // 从行中提取第3个td的文本
  row.element(by.css('td:nth-child(3)')).getText().then(function(code) {
    console.log('匹配到的Code:', code);
  });
});

这个XPath的逻辑很清晰:找到所有<tr>,其中第一个<td>的文本包含"Ernst",再从这些行里取第3列内容。

高效批量获取的方式

如果需要把所有结果收集到数组里(而不是逐个打印),可以用更高效的写法:

// 直接定位所有符合条件的Code单元格,批量获取文本
element.all(by.xpath('//tr[td[1][contains(text(), "Ernst")]]/td[3]')).getText().then(function(allCodes) {
  console.log('所有符合条件的Code:', allCodes); // 输出: ["MAK-ASA-AAKS", "KAL-ASA-AKK"]
});

这种方式只需要一次定位操作,性能更好,也方便后续对结果做处理。

内容的提问来源于stack exchange,提问作者demouser123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:18:39