最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

从selenium webdriver承诺获得最终输出的简明方法

IT培训 admin 3浏览 0评论

从selenium webdriver承诺获得最终输出的简明方法

我有以下代码使用selenium webdriver来获取元素的文本:

async function getText(driver, locator) {
    return await (await driver.findElement(locator)).getText();
}

我可能有些脑雾,但有没有更简洁的方法来编写这段代码?

我有一些其他功能需要更多的承诺链 - 它会变得混乱,所以我想找到一个很好,简洁的方法来编写函数。

该函数只需要返回文本,我不希望它返回一个promise。

回答如下:

一般来说,更清晰,更易读的方法是使用临时变量:

async function getText(driver, locator) {   
    const el = await driver.findElement(locator);
    return el.getText();
}

没有必要使用return await,除非你用try包装它。

Selenium使用装饰的承诺,允许在内部安排承诺链。可以在getText上安排WebElementPromise行动,结果将是getText的承诺:

function getText(driver, locator) {
    return driver.findElement(locator).getText();
}

Selenium的设计方式是在async..await出现之前编写类似同步的代码。代码保持异步。

该函数只需要返回文本,我不希望它返回一个promise。

这是this problem的一个特例。一旦代码异步,就无法再次进行同步。一旦涉及到promises,所有调用堆栈都应使用promises来获得正确的控制流。

从selenium webdriver承诺获得最终输出的简明方法

我有以下代码使用selenium webdriver来获取元素的文本:

async function getText(driver, locator) {
    return await (await driver.findElement(locator)).getText();
}

我可能有些脑雾,但有没有更简洁的方法来编写这段代码?

我有一些其他功能需要更多的承诺链 - 它会变得混乱,所以我想找到一个很好,简洁的方法来编写函数。

该函数只需要返回文本,我不希望它返回一个promise。

回答如下:

一般来说,更清晰,更易读的方法是使用临时变量:

async function getText(driver, locator) {   
    const el = await driver.findElement(locator);
    return el.getText();
}

没有必要使用return await,除非你用try包装它。

Selenium使用装饰的承诺,允许在内部安排承诺链。可以在getText上安排WebElementPromise行动,结果将是getText的承诺:

function getText(driver, locator) {
    return driver.findElement(locator).getText();
}

Selenium的设计方式是在async..await出现之前编写类似同步的代码。代码保持异步。

该函数只需要返回文本,我不希望它返回一个promise。

这是this problem的一个特例。一旦代码异步,就无法再次进行同步。一旦涉及到promises,所有调用堆栈都应使用promises来获得正确的控制流。

发布评论

评论列表 (0)

  1. 暂无评论