等待在selenium webdriver JavaScript绑定中可以看到多个元素

JavaScript的selenium webdriver绑定允许通过组合两个等待命令来等待元素可见,如下例所示:

const timeout = 1000;
const locator = webdriver.By.id('test');
driver.wait(webdriver.until.elementLocated(locator, timeout).then(function() {
   that.findElement(locator).then(function(element) {
      driver.wait(webdriver.until.elementIsVisible(element), timeout).then(function() {
         // element is visible!
      });
   });
});

当我们需要等待一组元素一起可见时,是否有更简单的方法来完成此操作以及如何完成此操作?

解决方法:

Promises的一大优势是你可以保持你的异步代码是线性的而不是嵌套的(来自继续传递样式的回调地狱).

Promise为您提供返回语句和错误抛出,您将通过延续传递方式丢失.

在您的情况下,您需要从承诺返回函数返回承诺,以便您可以链接您的承诺.

示例:Promise.all获取一系列promise并在所有promise解析后解析,如果有任何拒绝,则拒绝该数组.

this.waitForElementsToBecomeVisible = function() {
    return Promise.all([
        driver.wait(webdriver.until.elementIsVisible(usernameTextField), 500),
        driver.wait(webdriver.until.elementIsVisible(firstNameTextField), 500),
        driver.wait(webdriver.until.elementIsVisible(lastNameTextField), 500),
        driver.wait(webdriver.until.elementIsVisible(createEmployeeButton), 500)
    ]);
}

然后你可以链接你的承诺.

driver.get('https://website.com/login').then(function () {
    loginPage = new LoginPage(driver);
    return loginPage.login('company.admin', 'password')
}).then(function () {
    employeePage = new EmployeePage(driver);
    return employeePage.clickAddEmployee()
}).then(function () {
    addEmployeeForm = new AddEmployeeForm(driver);
   /**
    *
    * Wait for elements to become visible
    */
    return addEmployeeForm.waitForElementsToBecomeVisible();
}).then(function() {
    return addEmployeeForm.completeForm(employee);
}).then(function() {
    return addEmployeeForm.clickCreateEmployee();
}).then(function() {
    return employeePage.searchEmployee(employee);
});

您可以看到上面的示例是如何嵌套的,并且很容易维护.你返回一个承诺并继续链接而不是嵌套.我希望这对你有所帮助,而且根本不会让你感到困惑.

相关文章

转载地址:https://www.cnblogs.com/mini-monkey/p/12104821...
web自动化测试过程中页面截图相对比较简单,可以直接使用sel...
目录前言一、Selenium简介二、浏览器驱动1.浏览器驱动参考2....
一、iframe的含义:iframe是HTML中框架的一种形式,在对界面...
转载请注明出处❤️作者:测试蔡坨坨原文链接:caituotuo.to...
'''##**认识selenium**​**下载:pipinstall...