【Selenium】 【Node.js】独自なwait()条件を作る
環境 Ubuntu 16.04 Selenium Standalone Server 3.0.1
- 普通は
webdriver.until.*
を条件に使う事が多いが、普通に独自の値や条件判定で設定する事もできる。
以下のように、webdriver.Condition
のインスタンスを返すようにすればいい。
ConditionインスタンスはメッセージとManagePromiseを引数にとる。
selenium/promise.js at master · SeleniumHQ/selenium · GitHub
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'; }) } );