首页 > 解决方案 > 硒承诺{} 同时期望返回一个字符串

问题描述

我遇到了硒问题。我已经输出了一个模式,它从提交的请求中弹出一个字符串。我正在寻找使用 findElement 使用 xpath 获取该数据,并将字符串返回到控制台。看起来承诺没有解决,我不确定如何将它包装在承诺中,所以我得到了该承诺的结果。

DevTools 监听 ws://127.0.0.1:60822/devtools/browser/a2114051-85ec-47d7-9d62-9f9809ef732c

考试通过了

形式

承诺 { <待处理> }

   var webdriver = require('selenium-webdriver'),
    By = webdriver.By,
    until = webdriver.until;

USERNAME = 'XXXXXX';
PASSWORD = 'XXXXXXXX';
WEBSITE = 'https://XXXXXXXXXXXXXX/';
var driver = new webdriver.Builder()
    .forBrowser('chrome')
    .build();
//tag[text()=’text value‘]


driver.get(WEBSITE);


driver.sleep(4000).then(function() {
    driver.findElement(By.id('username')).sendKeys(USERNAME);
    driver.findElement(By.id('password')).sendKeys(PASSWORD);
    driver.findElement(By.id('submit1')).click();
});


driver.sleep(26000).then(function() {
    driver.getTitle().then(function(title) {
        if (title === 'Forms') {
            console.log('Test passed');
            console.log(title);
            driver.findElement(By.xpath("//*[text() = 'Request']")).click();
            //driver.findElement(By.id('market')).selectBuyValue('CI').click();
            //*[@id="request"]/div[3]/div/input
            driver.sleep(4000).then(function() {
                driver.findElement(By.xpath("//*[@id='market']")).sendKeys("CI");
                driver.findElement(By.xpath("//*[@id='request']/div[3]/div/input")).click();
            });
            driver.sleep(10000).then(function() {

                console.log(driver.findElement(By.xpath("//*[@id='myModal']/div/div/div[1]/div")).getText());

                //THIS WORKS driver.findElement(By.xpath("//*[@id='myModal']/div/div/div[2]/button")).click();
            });


        } else {
            console.log(title);
            console.log('took to long');
        }

    });
});

标签: javascriptseleniumselenium-webdriverpromise

解决方案


driver.findElement()和方法都WebElement.getText()返回一个承诺,所以你必须要么awaitasync函数中调用 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function - 要么增加你的回调地狱通过then()像调用其他 Promise 实例一样调用该方法。


推荐阅读