以下のようなコードで、ログインの動作テストを記述しています。
ログイン完了後は、ログイン前のページに戻ってくるため、
スタートしたページのURLと、戻ってきたときにgetCurrentUrl()で取得したURLを比較して、
一致すればOKとしようと考えています。
しかし、getCurrentUrl()が返す内容が、
Promise { <pending> }
となっており、最後のassert.equal()でエラーになります。
調べたところ、promiseは並列処理のステータスのようなものらしいということで、
処理の前にsleepを入れて結果が変わるかと思いましたが、ダメでした。
(画面が表示され、sleep中にブラウザのURLが意図しているものに変わっていることを確認しました)
どのようにすればgetCurrentUrl()がURLを返すようになるのでしょうか。
JS自体初心者のため、質問に不足がございましたらご指摘ください。
ご教示のほどお願いいたします。
以下一部抜粋
javascript
1it('ログイン操作', async () => { 2 let startpage = hostname+'/hogehuga/'; 3 //以下、処理が勝手に進まないようにawaitで実行 4 // テスト対象のページへアクセス 5 await driver.get(startpage); 6 //ログインリンクをクリック 7 await driver.findElement(By.xpath('/html/body/header/div[1]/ul/li[1]/a')).click(); 8 //ID・PASSWORDを入力 9 await driver.findElement(By.id('login_username')).sendKeys(usermail); 10 await driver.findElement(By.id('login_password')).sendKeys(userpassword); 11 //ログインボタン押下 12 await driver.findElement(By.xpath('//*[@id="form1"]/div/div[4]/button')).click(); 13 //現在のURLを確認し、ログインが完了し、元のページに戻ったかチェックする。 14 await driver.sleep(5000); 15 assert.equal(driver.getCurrentUrl(), startpage); 16});
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/13 23:25