takafumi blog

日々の勉強メモ

【Selenium】 【Node.js】独自なwait()条件を作る

環境   Ubuntu 16.04 Selenium Standalone Server 3.0.1

const webdriver = require('selenium-webdriver');
const promise = require('selenium-webdriver/lib/promise').Promise;
const driver = new webdriver.Builder() // オプション省略

let cond = function(val) {
    return new webdriver.Condition(
        "something message.",
        /**
         * @return {!ManagedPromise<T>}
         */
        function(driver){
            return promise.resolve(val);
        }
    );
}
driver.wait(cond(true), 60000);
  • ちなみにdocument.readyState == 'complete'を条件にするwait条件をつくりたかったのだが、webdriver.get()webdriver.click()はデフォルト対応しているらしい。 そしてajaxには無用・・・orz
  • 更にちなみに、一応以下のような感じ。テスト実施しているブラウザで、document.*みたいなのを使いたいときには参考になるかも。
let cond = new webdriver.Condition(
    "something message.",
    function(driver){
        return driver.executeScript('return document.readyState').then(r => {
            return r == 'complete';
        })
    }
);