2016-12-06 24 views
0

現在、Nightwatchプロジェクトをセットアップして、それが良いかどうかを確認しようとしています。私は今すぐThis tutorialに従っています。チュートリアルの内容は機能しますが、少し修正しようとするともう機能しません。私はDeveloper API guideを見ましたが、私はまだ何かが欠けていると思いますか? CMDでNightwatch setValueメソッドが機能しません

var conf = require('../../nightwatch.conf.js'); 

module.exports = { 
    'Demo test' : function (browser) { 
    browser 
     .url('http://localhost/myWebsite?newwindow=0') 
     .waitForElementVisible('body', 6000) 
     .setValue('input[name=txtLogin]', 'login') 
     .setValue('input[name=txtPassword]', 'password') 
     .waitForElementVisible('input.btnLogin', 2000) 
     .click('button[id=btnLogin]') 
     .pause(6000) 
     .assert.elementPresent("#selectTitle") 
     .assert.containsText('#selectTitle', 'schedules') 
     .assert.urlContains('login/login_start.asp') 
     .saveScreenshot(conf.imgpath(browser) + 'titleScreen.png') 
     .end(); 

    } 
}; 

エラー:

Running: Demo test 
√ Element <body> was visible after 41 milliseconds. 
ERROR: Unable to locate element: "input[name=txtLogin]" using: css selector 
at Object.Demo test (C:\Workspace\myWebsite\learn-nightwatch\test\e2e\My_Test.js:8:8) 
at _combinedTickCallback (internal/process/next_tick.js:67:7) 
ERROR: Unable to locate element: "input[name=txtPassword]" using: css selector 
at Object.Demo test (C:\Workspace\myWebsite\learn-nightwatch\test\e2e\My_Test.js:9:8) 
at _combinedTickCallback (internal/process/next_tick.js:67:7) 
× Timed out while waiting for element <input.btnLogin> to be present for 2000 milliseconds. - expected "visible" but got: "not found" 
at Object.Demo test (C:\Workspace\myWebsite\learn-nightwatch\test\e2e\My_Test.js:10:8) 
at _combinedTickCallback (internal/process/next_tick.js:67:7) 

そして最後に、HTMLだけで完全なものにする:

<input type="text" class="inputText" id="txtLogin" name="txtLogin" > 

<input type="password" class="inputText" id="txtPassword" name="txtPassword" > 

答えて

2

はsetValueの前.waitForElementVisible('input[name=txtLogin]',6000)に試してみてください、私が使用してコードを下に貼り付けられます。 ITはすべての私の問題を解決しました。 <body>が表示され、input[name=txtLogin]が表示されるまでに時間がかかることがあります。

@EDIT:

var conf = require('../../nightwatch.conf.js'); 

module.exports = { 
    'Demo test' : function (browser) { 
    browser 
     .url('http://localhost/myWebsite?newwindow=0') 
     .waitForElementVisible('body', 6000) 
     .waitForElementVisible('input[name="txtLogin"]', 6000) 
     .setValue('input[name="txtLogin"]', 'login') 
     .setValue('input[name="txtPassword"]', 'password') 
     .waitForElementVisible('input.btnLogin', 2000) 
     .click('button[id="btnLogin"]') 
     .assert.elementPresent("#selectTitle") 
     .assert.containsText('#selectTitle', 'schedules') 
     .assert.urlContains('login/login_start.asp') 
     .saveScreenshot(conf.imgpath(browser) + 'titleScreen.png') 
     .end(); 

    } 
}; 

上記ちょうど/コピー

+0

Mmhmのようなナイトウォッチチェーン関数からそれを呼び出す、私はちょうどそれを試してみたが、それまだそれはテキストボックスを見つけることができないと言いました。 '要素が6000ミリ秒間存在するのを待つ間にタイムアウトしました。 - 期待された "可視"だが、 "見つからない" ' – GillesDV

+0

あなたはロケータが有効であると確信していますか?間に入力[タイプ= "テキスト"] 'または'入力[ID = "txtLogin"] 'または'入力[名前= "txtLogin"] '' '' 'が必要です – Hikaryu

+0

いいえ、これらの作品はありません。私はNightwatchがウィンドウを開くのを見ることができます、そして、それはそれが見いだすテキストボックスを見るが、まだそれを見つけることができません。 – GillesDV

0

私はこれで問題が発生して、それがなかったことを確認するために働いていたテストスクリプトに戻ってしまったペーストのように試してみてください私。

ありsetValueのに問題が表示され、セレンドライバがhttps://github.com/nightwatchjs/nightwatch/issues/1147

私の仕事は、周りの.execute機能を使用してjQueryのか、バニラJavaScriptを使用してフォームフィールドを更新することでした。

.execute(function(){document.getElementById('_EmailAddress').value = '[email protected]';}) 
.execute(function(){$('#_Password').val('PasswordString');}) 
1

setValueも私にとっては厄介です。値を入力してからクリアすると、現在(10/10/2017)のうち、setValue機能を使用するたびにChromeの[設定]タブが開き始めました。

私は今、最初にその

var setValue = function(sel, value) { 
    $(sel).val(value).change(); 
}; 

のような関数を定義しているかどうその後、その

browser.url('https://google.com') 
    .execute(setValue, ['#search', 'keyword']) 
    .click('#search-btn') 
    .waitForElementVisible('an example of selector') 
    .assert.containsText('selector', '100000xxxx results') 
関連する問題