今天在调Test Case使当Robot使用HeadLess ChromeHeadLess Firefox Browser时可以在不用修正Test Case下皆能Pass

  主要是当RobotHeadLess FirefoxClick Element时都可以正常点击到我要点的Div(SSO-JP-BETA区块,UserID)元素,而判断是否点到与否的关键在于Div右下角可以弹出My AccountSignOut Menu,所以当下一动Robot检查My Account 元素是否存在时就会成功,然后继续做下一步。

  然而同样的情况叫Robot换用HeadLess Chrome来执行时,这时候就怎样都点不到Div(SSO-JP-BETA区块,UserID)元素,所以My Account/Sign Out Menu就一直出不来,之后"Wait Until Element Is Visible    My Account    30"便会因为等不到小Menu出现在30秒后Time Out,然后Test Case 就死在这里了。

  于是在HeadLess Chrome之下,我不断试了大大小小的点击或滑鼠事件,Robot就是有办法很牛逼的跟我说他点不到Div,真不知道他是发生了什么事。

 

  最后我灵机的脑袋瓜突然一动,拿Simulate    Locator    Event这个Keyword来试看看好了,这是强迫"模拟"Web browser的所有操作事件的一个Selenium2Library Keyword,这边我要模拟在UserID这个DIVClick的事件,有点像是我不管这DIV元素在页面哪里,我就是要强迫点击这个元素:

 

Simulate    UserID    click

  结果还真的是奏效了,模拟事件帮我完成了DIV元素点击的动作,中间不用透过笨笨的Robot,明明都已经告诉他元素就在那里,只是永远点不到,还真是将我给打败。

  然后我再把Browser切回HeadLess FireFox Mode,同样也过了Test Case,成功达成Test CaseHeadLess 浏览器的要求,Perfect!

  另一方面在Cross HeadLess Browsers的体验上,FireFoxChrome都大大缩短Web UI Test Case的执行时间,著实有感,证明HeadLess做法可以拿来Run 大量的Web UI Automation,因为比较有效率。

  但另一方面对于HeadLess Chrome的感受就明显比HeadLess Firefox 差,因为Chrome 一直都有些奇怪的问题,像这Robot点不到明显元件就是一例,而它在Command Line执行时更是会出现被称作是bug的讯息,目前无解,但不会影响结果,只是很明显在HeadLess这方面Chrome仍有许多方面需要加强。

 

(执行HeadLess Chrome都会秀这个ERROR,但是不会影响测试)

 

201895日星期三 

相关文章