Logré iniciar sesión en un sistema de resultados de laboratorio, pero no puedo avanzar más. Mi intención a largo plazo es obtener resultados de laboratorio para incorporarlos localmente en un registro médico.
const getIframeBody = () => { // get the iframe > document > body // and retry until the body element is not empty return cy .get('frame[id="EclairMainFrame"]') .its('0.contentDocument.body').should('not.be.empty') // wraps "body" DOM element to allow // chaining more Cypress commands, like ".find(...)" // https://on.cypress.io/wrap .then(cy.wrap) } describe('Medlab Test', () => { it('Visits Eclair', () => { cy.visit('https://cdr.medlabcentral.co.nz/Eclair/mvc') cy.get('.login-field').eq(0).type('userid') cy.get('.login-field').eq(1).type('passphrase{enter}') cy.location('pathname').should('eq', '/Eclair/ClinicalWorkstation.aspx') getIframeBody().find('.search-form-form-textbox') }) })Esto me permite iniciar sesión, pero Cypress no puede encontrar el campo de entrada para ingresar la identificación del paciente. Veo el siguiente mensaje de error:
Se agotó el tiempo de reintento después de 6000 ms: se esperaba encontrar el elemento: .search-form-form-textbox, pero nunca lo encontró. Consultado desde el elemento: <cuerpo>
El DOM en este punto para ese campo de entrada muestra:
<input class="search-form-form-textbox Mandatory" id="PatAliasId" name="PatAliasId" type="text" value="" tabindex="4"> Probé cy.get en la clase cy.get('.search-form-form-textbox') , en el id cy.get('#PatAliasId') y en el atributo de clase cy.get('name=["PatAliasId"]') pero todos estos intentos tienen un tiempo de espera de 6 segundos.
¿Cuál es la sintaxis correcta para encontrar un elemento dom dentro de un marco?
Para trabajar con marcos en Cypress, debe instalar un complemento de cypress con el siguiente comando, luego puede interactuar con los elementos dentro del marco
npm install -D cypress-iframeURL de referencia Cypress Frames
Si ya ha hecho lo anterior, cargue primero el marco para encontrar el elemento requerido
cy.frameLoaded(#frameId) cy.iframe.find('#PatAliasId').type('abc')En la versión anterior de cypress, no hay soporte para iFrame. Pero en la última versión, Cypress proporcionó soporte para iFrames.
Trabaje en cypress, necesitamos instalar cypress-iframe usando los siguientes comandos.
npm install -D ciprés-iframe
Use este código a continuación:
describe('Medlab Test', () => { it('Visits Eclair', () => { cy.visit('https://cdr.medlabcentral.co.nz/Eclair/mvc') cy.frameLoaded('#frameId') cy.iframe.find('#PatAliasId').type('Enter Your Input') }) })