Estoy usando Playwright para las pruebas de e2e. La declaración del problema que tengo es que quiero obtener el contenido de texto de todas las filas de una columna específica de una tabla. La tabla en cuestión es como las que se muestran aquí: https://ant.design/components/table/
(aunque cada td dentro del tr tiene una clase diferente en mi caso).
Solo digamos si quiero obtener toda la edad de la columna Edad en la tabla.
Probé un par de enfoques, pero todos terminaron con Promesa rechazada o Promesa en espera y la prueba se agotó.
P.ej -
let table_row = page.locator("tbody.ant-table-tbody tr"); // get the tr tags let text = table_row.locator('td:nth-child(2)'); const arrayoftext = await page.$$eval(text, links=> links.map(link.textContent) ) He hecho una pregunta similar relacionada con Puppeteer aquí , pero estoy tratando de abordar esto de una manera más dramatúrgica usando page.locator si es posible.
const textsFromThirdColumn = []; const rowCount = await page.locator('.ant-table-tbody').locator('tr').count(); for (let i = 0; i < rowCount; i++) { textsFromThirdColumn.push(await page.locator('.ant-table-tbody').locator('tr').nth(i).locator('td').nth(2).innerText()) }Con Playwright 1.21 se introdujo un nuevo método llamado :scope . Puedes leer más sobre esto aquí . Usando esto, puede optimizar su código de esta manera:
const row = page.locator('tbody.ant-table-tbody tr[data-row-key="3"]') const rowTexts = await row.locator(':scope').allInnerTexts() await rowTexts.forEach((text) => { console.log(text) })