LoginSignup
1
0

More than 1 year has passed since last update.

【Node.js、Javascript】SeleniumでOffice365にログインする

Posted at

はじまり

はじめてSeleniumを使って悪戦苦闘した熱が冷めない内に、成果を上げておきます。
Seleniumで、Office365から立ち上げるアプリの直リンクへアクセスした際に、Office365へのログインが求められた際に切り抜けたソースを貼っておきます。
ブラウザはChromeで行いました。

ソース

コメントアウトしているところはなくても動きますが、Seleniumのコードの動作確認ではあったほうがより役立ったという感覚がありました。
画面遷移の度に10秒くらいは余裕を持っていたほうが良いと思います。driver.waitは試していませんが、他のソースにも転用するためにdriverに依存しないものにしました。
waitTimeToDisplayは、各々のアプリによって時間を設定していただければと思います。

const { Builder, By } = require('selenium-webdriver');
const { it } = require('mocha');

const sleep = waitTime => new Promise( resolve => setTimeout(resolve, waitTime) );

const openAppViaO365 = async(driver, url, username, password, waitTimeToDisplay=40000) => {
    // const funcName = 'openAppViaO365';

    await driver.get(url);
    await driver.manage().window().maximize();
    // await console.log(funcName, "aaaaaaaaaaaaaaaaaa");
    await sleep(10000); 

    await driver.findElement(By.id("i0116")).sendKeys(username);
    await driver.findElement(By.id("idSIButton9")).click();
    // await console.log(funcName, "bbbbbbbbbbbbbbbbbb");
    await sleep(10000);

    await driver.findElement(By.id("i0118")).sendKeys(password);
    await driver.findElement(By.id("idSIButton9")).click();
    // await console.log(funcName, "cccccccccccccccccc");
    await sleep(10000);

    await driver.findElement(By.id("idBtn_Back")).click();
    // await console.log(funcName, "dddddddddddddddddd");
    await sleep(waitTimeToDisplay);
};

let driver;
describe("テスト", () => {
    before(() => {
        driver = new Builder().forBrowser("chrome").build();
    });

    after(() => {
        return driver.quit();
    });

    it(`Office365ログイン`, async () => {
        await openAppViaO365(driver, "https://~", "<username>", "<password>")
    });

});

おしまい

同じテスト自動化ツールのCypressだとこのログインになかなか苦戦しましたが、Seleniumだと案外あっさりできました。
Cypressだとitブロックが切り替わると表示されていた画面が閉じてしまったりもしますしね・・・

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0