Me gustaría realizar una búsqueda en la barra de búsqueda de abajo usando Titiritero. Sin embargo, no puedo ver nada que pueda usar para identificar la barra de búsqueda.
Si lo hago:
await page.type('[id="i0e792821-542f-11ec-9366-f3e8261f9ecb"]', 'test="1 2" and test2="3 4"'); await page.type('["data-test-subj"="queryInput"]', 'test="1 2" and test2="3 4"'); await page.type('[class=".euiTextArea.euiTextArea--resizeVertical.euiTextArea--fullWidth.kbnQueryBar__textarea.kbnQueryBar__textarea--hasPrepend.kbnQueryBar__textarea--hasAppend"]', 'test="1 2" and test2="3 4"'); await page.type("*[role='search']", 'test="1 2" and test2="3 4"');entonces los 3 primeros dan:
Error: No node found for selector:y el último no da ningún error.
Si lo hago:
await page.waitForSelector('i0e792821-542f-11ec-9366-f3e8261f9ecb'); await page.focus('i0e792821-542f-11ec-9366-f3e8261f9ecb'); await page.focus('i0e792821-542f-11ec-9366-f3e8261f9ecb', '1234', {delay: 1500});Yo obtengo:
TimeoutError: waiting for selector `i0e792821-542f-11ec-9366-f3e8261f9ecb` failed: timeout 30000ms exceeded¿Qué puedo usar para completar el texto en la barra de búsqueda?
Si desea seguir con su segunda metodología, debe usar el selector de CSS correcto anteponiendo un # para indicar que el valor i0e792821-542f-11ec-9366-f3e8261f9ecb es un valor de id y cambiar la última línea a la page.type() en lugar de page.focus() (que no toma más de un argumento ni implementa ningún tipo de funcionalidad de escritura):
await page.waitForSelector('#i0e792821-542f-11ec-9366-f3e8261f9ecb'); await page.focus('#i0e792821-542f-11ec-9366-f3e8261f9ecb'); await page.type('#i0e792821-542f-11ec-9366-f3e8261f9ecb', '1234', {delay: 1500});Sin embargo, con los selectores que no son legibles por súper humanos, generalmente debe asumir que se generan dinámicamente en algún lugar durante la compilación o el tiempo de ejecución y cambiarán con el tiempo; cada vez que cambie, su secuencia de comandos se romperá y tendrá que re- trabaje su código para actualizar el selector. En su lugar, use un selector que sea un poco más legible para los humanos y, por lo tanto, es más probable que permanezca constante:
await page.waitForSelector('[data-test-subj="queryInput"]'); await page.focus('[data-test-subj="queryInput"]'); await page.type('[data-test-subj="queryInput"]', '1234', {delay: 1500});Realmente no conozco Titiritero (o la sintaxis), pero me imagino algo como; div[role="search"].textarea o div[role="search"] > textarea