selenium js click元素直到text不相等

时间:2016-06-26 12:23:32

标签: javascript node.js selenium selenium-webdriver

在nodejs中,我想点击元素,直到其他元素中的文字不等于'100'

我尝试编写这样的代码:

while (this.getLinkText() != '100') { 
    this.clickOnButton();
}

我不知道如何使用js selenium-webdriver这样做,因为当我尝试以这种方式获取元素的文本时

 driver.findElement(By.xpath(this.path)).getText();

它返回'promise'而不是字符串,所以我不知道如何在while循环中使用它

1 个答案:

答案 0 :(得分:0)

虽然循环是通往无处的道路,但尝试使用带回调的递归函数。 我有类似的问题,有必要在日历中选择年份(点击“下一步”,直到我有一个正确的年份)

var yearToFind = '2016';

function chooseYear(callback) {
    // get current year from calendar
    driver.findElement(webdriver.By.xpath('.//*[@class="ui-datepicker-year"]'))
    .getText()
    .then(function(currentYear) {
        if (currentYear != yearToFind) {
            // click "next year" button and call chooseYear function again
            driver.findElement(webdriver.By.xpath('.//a[@class="ui-datepicker-next-year"]'))
            .then(function(subelement) {
                subelement.click().then(function() {
                    chooseYear(callback)
                });
            })
        } else {
            // do your actions if the year is correct
            callback();
        }
    });
}

chooseYear(function() {
    console.log('I have got the correct year finally!');
});