【发布时间】:2021-04-17 17:52:55
【问题描述】:
我是开发新手,在创建一个 e2e 测试时遇到了真正的问题。
基本上,我有一个包含 2 行或更多行的表,每行有 5 列(标题、x、y、z 按钮)。
如何使用标题单击正确行上的按钮? (这是一个测试来证明这个表的删除过程是有效的)。
我正在测试的应用程序是使用 React 框架编写的,因此所有表都经常更改,我需要一种方法来信任代码并且没有任何错误。
I need to click this element but it is not ever in the same position
HTML
<table>
<tr>
<td>Some Title</td>
<td>x</td>
<td>y</td>
<td>
<button>I need to click this</button>
</td>
</tr>
<!--other rows--!>
</table>
这是我遇到的解决方案
const rows = await page.$$eval("tr", (row) =>
row.map((e) => e.textContent)
);
const correctRowIndex = rows.findIndex((e) => e.includes(TITLE_I_KNOW));
await page.click(
"//tr[normalize-space(.)='" + rows[correctRowIndex] + "']/td/button"
);
期望的行为
我的代码似乎没有遵循最佳实践,我需要一个解决方案,将这个东西分成两部分。
1 - 将正确的行保存到变量中
2 - 单击已保存行中包含的按钮
【问题讨论】:
-
我真的不知道你所说的右行是什么意思。行是堆叠的,它们不在左侧或右侧。也许你的意思是一个专栏?是否要选择按钮所在的最右侧列?还是别的什么?
-
我的意思是我需要的那个,基本上,我在这个表中添加了一个具有特定标题的元素,现在我想删除我在行的第四列中使用按钮添加的那个元素
-
“对”是指正确的
-
这能回答你的问题吗? Selecting the right row
标签: javascript css-selectors e2e-testing playwright