onlinereadbook / bookreactjs

線上reactjs讀書會
110 stars 10 forks source link

[ 10/3 Nightwatchjs + Reactjs todoMvc ] 心得分享 #26

Open bbandydd opened 7 years ago

bbandydd commented 7 years ago

各位如果有問題,歡迎發問喔

Wolke commented 7 years ago

nightwatch拿來當 廣告留言機 適合嗎? 還是有什麼其他推薦的自動化工具。

bbandydd commented 7 years ago

可以詳細描述廣告留言機要做甚麼嗎

LarryLuTW commented 7 years ago

我有用過 phantomjs 可以拿來做一些網頁自動化 能做到跟瀏覽器一樣的功能

bbandydd commented 7 years ago

https://github.com/nightwatchjs/nightwatch/wiki/Running-tests-in-PhantomJS 看來可以把browser設定在phantom跑 Running tests in PhantomJS

ElaineHuang commented 7 years ago

感謝!講得非常詳細!想請問一下,建議把mocha和nightwatch一起用嗎?用了mocha後,nightwatch是不是就不支援--reporter了?想說beforeEach應該能更把程式碼簡化,謝謝!

chnbohwr commented 7 years ago

補上一些小技巧

  1. 不正確的 CSS Selector 沒有使用正確的 CSS selector 就會找不到 element 發生錯誤,例如以下的範例,雖然 selector 可正常在瀏覽器執行,但是沒有辦法在 nightwatch 裡面執行。

    // not working, bad
    browser.waitForElementPresent('div[title=test]')

    change to

    browser.waitForElementPresent('div[title="test"]')

    正確的 selector 方法請參考 REC-css3-selectors-20110929

  2. firefox 無法打開 目前測試 firefox 47.0 沒有辦法使用 selenium ,升級到 47.01 就可以了。 補上 firefox 設定步驟

  3. 如何上傳檔案到遠端的 selenium server,可以呼叫uploadFileToSeleniumServer 這個功能,不過這只有我私人的 repository 有,所以必須要修改 package.json "nightwatch": "github:chnbohwr/nightwatch" 對應到我的專案上。

  4. 程式卡在點選某個 element 之後就不動了 檢查看看是不是 element 上面有其他的東西擋住 .click('.button_1', function(e){console.log('e')}) 如果有以下訊息印出來就是有東西擋住 element 導致 selenium 無法點選到 unknown error: Element is not clickable at point (429, 410). Other element would receive the click

  5. waitForElementPresent & waitForElementVisible 有什麼不同 Present 代表有在 HTML(包含畫面外以及未呈現),而 Visible 代表有在畫面上,而且有正確呈現出來

  6. 測到彈跳視窗的時候,會被chrome瀏覽器擋住 在 nightwatch.conf.js 裡面編輯環境變數加入 chrome option 允許彈跳視窗,所有chrome option

    "desiredCapabilities" : {
      "browserName" : "chrome",
      "chromeOptions" : {
        "args" : ["disable-popup-blocking"]
      }
    }
  7. 想要點擊 iframe 裡面的 alert 要怎麼辦? getAttribute取得iframe src後導頁後再執行acceptAlert

  8. 每個測試項目的 test description 要不同,否則會出錯。

chnbohwr commented 7 years ago

@ElaineHuang 可以參考這篇來做設定使用 mocha

mocha 本身的 reporter 有很多,也可以輸出 xml 詳細的內容可以參考這邊

ElaineHuang commented 7 years ago

好的!謝謝!想再請教一下,node的automation test其實還有webdriver.io,nightmare.js,webDriverJs 請問為什麼會想用nightwatch呢?或是nightwatch有什麼優勢呢? 謝謝!

chnbohwr commented 7 years ago

其實我以前也有用過 webdriver.io 實際上寫起來也是差不多,建議挑一套自己順手的就好

ElaineHuang commented 7 years ago

好的!謝謝 👍