selenium Promise {<pending>}, ожидая, что строка будет возвращена - PullRequest
0 голосов
/ 06 марта 2019

У меня проблемы с селеном. Я вывел модал, который выскакивает со строкой из отправленного запроса. Я ищу использовать 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');
        }

    });
});

1 Ответ

0 голосов
/ 06 марта 2019

Оба метода driver.findElement() и WebElement.getText() возвращают обещание, поэтому вам придется либо await вызвать функцию async - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function - либо увеличить свой ад обратного вызова, вызвав then() метод, как вы делаете с другими экземплярами обещания.

...