【问题标题】:nodejs selenium add a function to webdriver (highlight element) click() is not a functionnodejs selenium向webdriver添加一个功能(突出显示元素)click()不是一个功能
【发布时间】:2021-11-12 03:54:44
【问题描述】:

尝试在 chromedriver 中创建新函数或覆盖现有的 findelement() 函数

对我来说,第一步是创建新的而不是覆盖来测试它

 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);
  };

然后在我调用的另一个函数中

await driver.findElementWithHighlight(some locator).click();

但毕竟我得到了这个错误:

TypeError: driver.findElementWithHighlight(...).click 不是函数

我在这里做错了什么? 如果我的新函数返回相同的 WebElementPromise,为什么我的新函数没有 click() 方法?

【问题讨论】:

    标签: javascript node.js selenium overriding


    【解决方案1】:

    它返回一个 Promise 并且您正在 Promise 对象上调用 .click()。而是将其包裹在 (await driver.findElementWithHighlight(...)).click() 周围。所以它会被等待,你将能够调用你的点击函数。

    【讨论】:

    • 好的,现在可以了,但也许我可以做些什么来离开 await driver.findElementWithHighlight(some locator).click();原样?也许在函数定义中?
    • 不,但你可以driver.findElementWithHighlight(some locator).then(element => { element.click() })
    【解决方案2】:

    你可以继续做更多的功能

    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-17
      • 2019-12-15
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      • 2019-02-01
      • 2011-07-14
      相关资源
      最近更新 更多