tratando de crear una nueva función en chromedriver o anular la función findelement() existente
Los primeros pasos para mí fueron crear algo nuevo en lugar de anularlo para probarlo.
const driver = await new Builder() .forBrowser("chrome") .setChromeOptions( new chrome.Options() .windowSize(screen) ) .build(); driver.findElementWithHighlight = async (locator) => { let element = await driver.findElement(locator); await driver.executeScript("arguments[0].style.border='3px solid red'", element); return driver.findElement(locator); };luego en otra función llamo
await driver.findElementWithHighlight(some locator).click();pero despues de todo esto me sale este error:
TypeError: driver.findElementWithHighlight(...).click no es una función
¿Qué hago mal aquí? ¿Por qué mi nueva función no tiene el método click() si devuelve la misma WebElementPromise?
Devuelve una promesa y está llamando a .click() en el objeto Promise. En su lugar, envuélvelo (await driver.findElementWithHighlight(...)).click() . Por lo tanto, se esperará y podrá llamar a su función de clic.
Puedes seguir haciendo más funciones.
driver.findElementWithHighlight = async (locator) => { let element = await driver.findElement(locator); await driver.executeScript("arguments[0].style.border='3px solid red'", element); return driver.findElement(locator); }; driver.findElementWithHighlightAndClick = async (locator) => { return driver.findElementWithHighlight(locator) .then((highlighted) => { return highlighted.click(); }); }; driver.findElementWithHighlightAndClick(some_locator);