diff --git a/README.md b/README.md index dbc361d..bcb3552 100644 --- a/README.md +++ b/README.md @@ -188,8 +188,10 @@ Il est possible de définir une liste d'actions à travers le champ `actions` qu | `waitForSelector` | string | Non | Attend que l'élément HTML définit par le sélecteur CSS soit visible | | `waitForXPath` | string | Non | Attend que l'élément HTML définit par le XPath soit visible | | `waitForNavigation` | string | Non | Attend la fin du chargement de la page. 4 valeurs possibles : `load`, `domcontentloaded`, `networkidle0`, `networkidle2` | +| `screenshot` | string | Non | Réalise une capture d'écran de la page, après avoir réalisé l'action. La valeur à renseigner est le nom de la capture d'écran. La capture d'écran est réalisée même si l'action est en erreur. | + +Les conditions de type `waitFor` peuvent être réutilisées afin de définir une condition d'attente après l'exécution de l'action. Elles restent optionnelles. La capture d'écran, le cas échéant, est réalisée après cette condition d'attente. -Les conditions de type `waitFor` peuvent être réutilisées afin de définir une condition d'attente après l'exécution de l'action. Elles restent optionnelles. Des paramètres supplémentaires peuvent être nécessaires selon le type de l'action. diff --git a/cli-core/analysis.js b/cli-core/analysis.js index 8062c61..a714c25 100644 --- a/cli-core/analysis.js +++ b/cli-core/analysis.js @@ -53,16 +53,9 @@ async function analyseURL(browser, pageInformations, options) { } } - try { - if (pageInformations.actions) { - // Execute actions on page (click, text, ...) - await startActions(page, pageInformations.actions, TIMEOUT); - } - } finally { - // Take screenshot (even if the action fails) - if (pageInformations.actions && pageInformations.actions.screenshot) { - await takeScreenshot(page, pageInformations.actions.screenshot); - } + if (pageInformations.actions) { + // Execute actions on page (click, text, ...) + await startActions(page, pageInformations.actions, TIMEOUT); } let harObj = await pptrHar.stop(); @@ -142,22 +135,28 @@ async function startActions(page, actions, TIMEOUT) { await page.waitForTimeout(timeout); } - if (action.type === "click") { - await page.click(action.element); - await waitPageLoading(page, action, TIMEOUT); - } else if (action.type === "text") { - await page.type(action.element, action.content, {delay: 100}); - await waitPageLoading(page, action, TIMEOUT); - } else if (action.type === "select") { - let args = [action.element].concat(action.values); - // equivalent to : page.select(action.element, action.values[0], action.values[1], ...) - await page.select.apply(page, args); - await waitPageLoading(page, action, TIMEOUT); - } else if (action.type === "scroll") { - await scrollToBottom(page); - await waitPageLoading(page, action, TIMEOUT); - } else { - console.log("Unknown action for '" + actionName + "' : " + action.type); + try { + if (action.type === "click") { + await page.click(action.element); + await waitPageLoading(page, action, TIMEOUT); + } else if (action.type === "text") { + await page.type(action.element, action.content, {delay: 100}); + await waitPageLoading(page, action, TIMEOUT); + } else if (action.type === "select") { + let args = [action.element].concat(action.values); + // equivalent to : page.select(action.element, action.values[0], action.values[1], ...) + await page.select.apply(page, args); + await waitPageLoading(page, action, TIMEOUT); + } else if (action.type === "scroll") { + await scrollToBottom(page); + await waitPageLoading(page, action, TIMEOUT); + } else { + console.log("Unknown action for '" + actionName + "' : " + action.type); + } + } finally { + if (action.screenshot) { + await takeScreenshot(page, action.screenshot); + } } } } @@ -333,4 +332,4 @@ async function createJsonReports(browser, pagesInformations, options, proxy, hea module.exports = { createJsonReports, login -} \ No newline at end of file +}