Selenium Webdriver : wd.js에서 선택 상자 선택

Selenium Webdriver를 사용하는데 wd.js 을 사용하고 있습니다만, node.js라고 어떻게 select box를 선택하는지 모르고 조사했으므로 결과를 메모해 둡니다.

Java라고 element에 대해 selectByVisibleText()를 사용하는 것으로 선택할 수 있는 것 같았지만, wd.js 의 API 매뉴얼을 보면 그런 것도 없고···라고 하는 느낌으로 조사하고 있으면 URL은 잊었습니다만 stackoverflow에서 python의 경우 방법을 듣고있는 사람이 있고, 답변에 xpath를 지정하면 OK라는 것을 찾아, 과연! 그렇다고 해서 wd.js에서도 해 보았더니 잘 할 수 있었습니다.

아래는 yahoo의 노선 검색으로, 22일의 13시 20분착의 전철을 조사하는 샘플 코드입니다.
"use strict";

var wd = require("wd");

require('colors');
var chai = require("chai");
var chaiAsPromised = require("chai-as-promised");
chai.use(chaiAsPromised);
var should = chai.should();
chaiAsPromised.transferPromiseness = wd.transferPromiseness;

describe("Select box test", function () {
  this.timeout(300000);
  var driver;

  before(function () {
    var serverConfig = {
      host: 'localhost',
      port: 4444
    };

    driver = wd.promiseChainRemote(serverConfig);

    var desired = {
      browserName: 'chrome',
      platformName: 'mac',
    };
    return driver.init(desired);
  });

  after(function () {
    return driver
      .quit();
  });

  it("should get the url", function () {

    return driver
      .get('http://www.yahoo.co.jp')
      .waitForElementByLinkText('路線')
        .click()
      .waitForElementByCssSelector('#sfrom')
        .type('秋葉原')
      .waitForElementByCssSelector('#sto')
        .type('新宿')
      .waitForElementByXPath('//*[@id="d"]/option[22]')
        .click()
      .waitForElementByXPath('//*[@id="hh"]/option[13]')
        .click()
      .waitForElementByXPath('//*[@id="mm"]/option[20]')
        .click()
      .waitForElementByXPath('//*[@id="tsArr"]')
        .click()
      .waitForElementById('searchModuleSubmit')
        .click()
      .waitForElementByClassName('title')
        .text().should.eventually.equal('秋葉原→新宿')
      .saveScreenshot('test_result.png');
  });

});


실행 결과는 이렇게.

좋은 웹페이지 즐겨찾기