SlideShare ist ein Scribd-Unternehmen logo
1 von 63
Downloaden Sie, um offline zu lesen
#JCConf
淺談 Geb 網站⾃自動化測試
林彥宏 lyhcode@gmail.com
#JCConf
• 遊牧⼯工程師 / Nomadic Developer
• 遠距⼯工作者 / Remote Worker
• 喜歡分享程式設計的樂趣
• Founder of 思創軟體,校園協同教學業師
• Co-founder of PLWeb,開發程式語⾔言學習網
• Groovy user since 2008
Who Am I
林彥宏
lyhcode.info
#JCConf
Geb (pronounced“jeb”)
very groovy browser automation… web testing, screen scraping and more
JCConfTW
2014
Geb (pronounced“jeb”)
very groovy browser automation… web testing, screen scraping and more
瀏覽器⾃自動化
Browser Automation
Groovy Browser Automation
What is Geb?
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Geb 可以做什麼︖?
• Web Application Testing
• Functional Testing
• User Acceptance Testing
• Web Automation Script
• Web Crawler
• Webpage Screenshot
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Geb 的優點
• Based on the WebDriver
• jQuery-like selector and syntax
• 易學易讀易寫的 Groovy DSL
• 實現 Page Object Pattern
• ⾼高度整合測試框架,如 JUnit, Spock, TestNG…
• 開發流程整合,搭配 Grails, Gradle, Maven,
Jenkins CI…
WebDriver
#JCConf
Geb (pronounced“jeb”)
very groovy browser automation… web testing, screen scraping and more
JCConfTW
2014
Java SE
Groovy WebDriver
Geb
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
SeleniumHQ
• Selenium IDE
• Selenium Remote Control
• Selenium WebDriver
• Selenium Grid
Browser Automation Suite
Geb 的核⼼心驅動
Selenium Sponsors:
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Selenium Core
• Created by Jason Huggins in 2004 at ThoughtWorks.
• 源起⾃自⼀一個測試⼯工具 “JavaScriptTestRunner”
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Selenium IDE
• Firefox extension
• Easy record and playback
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
WebDriver
• Selenium 1.0 + WebDriver = Selenium 2.0
• WebDriver API 規範已提交 W3C 標準
• http://www.w3.org/TR/webdriver/
• Selenium WebDriver
• ⽀支援多種程式語⾔言:
• Java, C#, Ruby, Python, Perl
• ⽀支援多種瀏覽器:
• Google Chrome、Firefox 與 Internet Explorer 等
• HtmlUnit (headless browser)
W3C Working Draft Editors
1. Simon Stewart, Facebook
2. David Burns, Mozilla
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Selenium Remote Control
• Selenium RC
• Client / Server 架構
• Great for testing
under a Continuous
Integration system
(e.g. Jenkins CI)
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
殘念
⾃自動化測試的難題
987. WebDriver driver = new FirefoxDriver();
988. driver.get("http://www.google.com");
989. WebElement element = driver.findElement(By.name("q"));
990. element.sendKeys("geb");
991. element.submit();
992. System.out.println("Title: " + driver.getTitle());
993. driver.quit();
為什麼我們還需要 Geb︖?
#JCConf
Geb (pronounced“jeb”)
very groovy browser automation… web testing, screen scraping and more
JCConfTW
2014
Java SE
Groovy WebDriver
Geb
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Why Groovy
• Groovy makes Java better, more powerful and easier
to use.
• Groovy 易學易寫,從 Java 到 Groovy ⾨門檻極低
• 程式碼更精簡,⽀支援以 Scripting ⽅方式執⾏行
• Groovy 發揮 DSL 優勢

DSL, Domain-Specific Language 領域描述語⾔言
• 共享 Java 豐富資源
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Groovy DSL
1. task hello {
2. doLast {
3. println "Hello"
4. }
5. }
6.
Example: Define a Gradle Task
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Why Are DSLs Important?
• To improve programmer’s
productivity.
• Smaller and easier to understand,
allow nonprogrammer to see the
code that drives important parts
of their business.
— Martin Fowler
ThoughtWorks
#JCConf
Geb (pronounced“jeb”)
very groovy browser automation… web testing, screen scraping and more
JCConfTW
2014
Java SE
Groovy WebDriver
Geb
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Geb Awesome
• jQuery-like
• CSS based content lookup (Navigator API)
$('input[name=username]').value()
• Method Chaining
$('h3').children().attr('href')
• DSL featured
Browser.drive {

go 'http://google.com'

}
This is Geb code, not jQuery :)
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
開始使⽤用 Geb
1. 安裝 JDK
2. 安裝 Groovy
3. 使⽤用 Groovy Shell 或 Groovy Console
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
安裝 Groovy
• 建議使⽤用 GVM ⼯工具(for Mac OS X, Linux)
• gvmtool.net
• Install Groovy with GVM tool
gvm install groovy
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
安裝 Geb︖?
• Geb 是⼀一個 Java/Groovy Library,

not standalone software
• 主要套件名稱是 geb-core
• 可以從 Maven Repository 取得所需 JAR 檔案
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Geb with Groovy Shell
$ groovysh
REPL (Read–Eval–Print Loop) 適⽤用於 Geb step-by-step 的執⾏行⽅方式
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Dependencies of Geb
<dependency>
<groupId>org.gebish</groupId>
<artifactId> geb-core </artifactId>
<version>0.10.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId> selenium-firefox-driver </artifactId>
<version>2.44.0</version>
</dependency>
Geb 需要 2 個套件(artifact)
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
搜尋 Maven Repository
mvnrepository.com
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Using Grapes
1. groovy.grape.Grape.grab(group: 'org.gebish', module:
'geb-core', version: '0.10.0')
2. groovy.grape.Grape.grab(group: 'org.seleniumhq.selenium',
module: 'selenium-firefox-driver', version: '2.44.0')
Grape lets you quickly add maven repository
dependencies to your classpath.
Attention: Not ‘org.codehaus.geb’
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Browse Google Web Site
3. b = new geb.Browser()
4. b.go 'http://google.com'
5. b.title
建⽴立 Browser 物件
命令瀏覽器開啟 URL 位址顯⽰示網⾴頁
取得網⾴頁標題“Google”
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
檢測元素
利⽤用「檢測器」觀察即時的 DOM
內容︔;⽽而非 HTML 原始碼
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
DOM 選擇器(Selector)
A. $('form.tsf')
B. $('form#tsf')
C. $('form[name=f]')
<form class="tsf" action="/search"
id="tsf" method="GET"
name="f" role="search">
選哪⼀一個好呢︖?
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Geb Navigator API
$('form.tsf').attr('action')
$('form[name=f]').attr('action')
$('form', name: 'f').attr('action')
$('form', id: 'tsf').attr('action')
<form class="tsf" action="/search"
id="tsf" method="GET"
name="f" role="search">
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
表單存取
6. form = b.$('form#tsf')
7. form.q = 'jcconf 2014'
利⽤用選擇器找到⽬目標表單元素
修改表單欄位資料︔;⽴立刻
在瀏覽器畫⾯面產⽣生改變
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
表單送出
8. form.btnk().click()
<input value="Google 搜尋”
name="btnK" type="submit">
點擊「Google 搜尋」按鈕
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
瀏覽器即時互動
groovy:000> b.title
===> jcconf 2014 - Google 搜尋
groovy:000> b.currentUrl
===> https://www.google.com.tw/?gfe_rd=cr&ei=JHtkVN6IIZCZlAWzv4CgBg&gws_rd=ssl#q=jcconf+2014
瀏覽器畫⾯面更新後,Geb 程式
可以獲取新的資料
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
存取網⾴頁內容
9. b.$('h3').collect { it.text() }
10. b.$('h3 a').collect { it.attr('href') }
搜尋結果的所有標題⽂文字
搜尋結果中所有的網⾴頁連結
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
點擊連結 Click
11. b.$('h3 a').first().click()
點進去搜尋排名在第⼀一筆的網站連結
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Scripting with Groovy
1. @Grab('org.gebish:geb-core:0.10.0')
2. @Grab('org.seleniumhq.selenium:selenium-firefox-driver:2.44.0')
3.
4. b = new geb.Browser()
5. b.go 'http://google.com'
6.
7. form = b.$('form#tsf')
8. form.q = 'jcconf 2014'
9. form.btnK().click()
10.
11. b.quit()
GoogleSearch.groovy
$ groovy GoogleSearch.groovy
使⽤用 @Grab 引入需要的套件
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Re-write in DSL Style
1. @Grab('org.gebish:geb-core:0.10.0')
2. @Grab('org.seleniumhq.selenium:selenium-firefox-driver:2.44.0')
3.
4. Browser.drive {
5. go 'http://google.com'
6.
7. $('form#tsf').with {
8. q = 'jcconf 2014'
9. btnK().click()
10. }
11. }.quit()
DSL 語法使⽤用 Groovy Closure 實現
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
waitFor
1. Browser.drive {
2. go 'http://google.com'
3.
4. $('form#tsf').with {
5. q = 'jcconf 2014'
6. btnK().click()
7. }
8.
9. waitFor {
10. title.contains('jcconf 2014')
11. }
12.
13. $('h3').each {
14. println it.text()
15. }
16. }.quit()
⼀一直等…⋯⼀一直等…⋯⼀一直等…⋯
直到標題變成 “jcconf 2014”
或是 Timeout (逾時)
預設的 Wait Timeout 預設值為 5 秒
#JCConf
1. #!/usr/bin/env groovy
2. @Grab('org.gebish:geb-core:0.10.0')
3. @Grab('org.seleniumhq.selenium:selenium-firefox-driver:2.44.0')
4. import geb.Browser
5.
6. def keywords = args.join(' ')
7.
8. Browser.drive {
9. go 'http://google.com'
10.
11. $('form#tsf').with {
12. q = keywords
13. btnK().click()
14. }
15. waitFor {
16. $('h3').size() > 0
17. }
18. $('h3').each {
19. println "* ${it.text()}"
20. }
21. }.quit()
GoogleSearch
command-line tool
$ ./GoogleSearch jcconf 2014 | sort | less
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Reporting
• 產⽣生測試報告
• 原始碼(.html)
• 網⾴頁快照(*.png)
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Reporting
1. Browser.drive {
2. config.reportsDir = new File('.')
3.
4. go 'index.html'
5. report 'home page'
6.
7. go 'login.html'
8. report 'login page'
9.
10. $('#form').with {
11. username = '...'
12. password = '...'
13. btnLogin().click()
14. }
15.
16. waitFor { title.contains('Dashboard') }
17. report 'dashboard page'
18. }
設定報表路徑
report 1
report 2
report 3
#JCConf
ScreenShot
command-line tool
$ ./ScreenShot http://jcconf.tw
#JCConf
1. #!/usr/bin/env groovy
2. @Grab('org.gebish:geb-core:0.10.0')
3. @Grab('org.seleniumhq.selenium:selenium-firefox-driver:2.44.0')
4. import geb.Browser
5. Browser.drive {
6. config.reportsDir = new File('.')
7. go args[0]
8. report "screenshot"
9. }.quit()
ScreenShot
$ ./ScreenShot http://jcconf.tw
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Cross-browser Testing
• selenium-chrome-driver
• selenium-firefox-driver
• selenium-ie-driver
• selenium-safari-driver
• selenium-htmlunit-driver
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
HtmlUnit Driver
• HtmlUnit - Java GUI-Less browser, supporting
JavaScript, to run agains web pages
• 適合沒有桌⾯面環境的 Server 執⾏行
• ⽀支援 JavaScript?
• 優點:速度快;缺點:不適合複雜的網⾴頁
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
1. @Grab('org.gebish:geb-core:0.10.0')
2. @Grab('org.seleniumhq.selenium:selenium-htmlunit-driver:2.44.0')
3. import geb.Browser
4. driver = 'htmlunit'
5.
6. Browser.drive {
7. go ...
8. }.quit()
設定 Geb Driver
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
1. @Grapes([
2. @Grab('org.gebish:geb-core:0.10.0'),
3. @Grab('org.seleniumhq.selenium:selenium-chrome-driver:2.44.0')
4. ])
5. import geb.Browser
6.
7. System.setProperty('webdriver.chrome.driver', '/tmp/chromedriver')
8.
9. driver = {
10. new org.openqa.selenium.chrome.ChromeDriver()
11.}
12.
13.Browser.drive {
14. go ...
15.}
ChromeDriver
需要先下載
chromedriver
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
RemoteWebDriver
Selenium RC Server
Selenium WebDriver
Geb
Selenium RC Client
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
RemoteWebDriver
• Launch a selenium server

java -jar selenium-server-standalone-2.44.0.jar -port 4000
→ http://192.168.0.144:4120/wd/hub
driver = new RemoteWebDriver(

new URL('http://192.168.0.144:4120/wd/hub'),

DesiredCapabilities.firefox()

)
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Cloud Browser Testing
• VM-based browsers on-demand
• 輕鬆測試各種[瀏覽器/作業系統/版本]的組合
• https://saucelabs.com/
• http://www.browserstack.com/
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
BrowserStack
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
BrowserStack
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
BrowserStack
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Geb + BrowserStack
1. def browserStackBrowser = System.getProperty("geb.browserstack.browser")
2. if (browserStackBrowser) {
3. driver = {
4. def username = System.getenv("GEB_BROWSERSTACK_USERNAME")
5. def accessKey = System.getenv("GEB_BROWSERSTACK_AUTHKEY")
6. new BrowserStackDriverFactory().create(
7. browserStackBrowser, username, accessKey)
8. }
9. }
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Testing Frameworks
Geb 可以搭配多種測試框架
• JUnit 3
• JUnit 4
• Spock
• TestNG
• Cocumber
• EasyB
Geb 與 Spock 搭配很對味
Framework JAR Class Name
Spock geb-spock geb.spock.GebSpec
JUnit 3 geb-junit3 geb.junit3.GebTest
JUnit 4 geb-junit4 geb.junit4.GebTest
TestNG geb-testng geb.testng.GebTest
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
Page Object
1. class LoginPage extends Page {
2. static url = "http://myapp.com/login"
3. static at = { heading.text() == "Please Login" }
4. static content = {
5. heading { $("h1") }
6. loginForm { $("form.login") }
7. loginButton(to: DashboardPage) { loginForm.login() }
8. }
9. }
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
GebSpec
1. class LoginSpec extends GebSpec {
2. def "login to dashboard section"() {
3. given:
4. to LoginPage
5.
6. when:
7. loginForm.with {
8. username = "admin"
9. password = "password"
10. }
11.
12. and:
13. loginButton.click()
14.
15. then:
16. at DashboardPage
17. }
18.}
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
開發流程整合
• Gradle + Geb
• https://github.com/geb/geb-example-gradle
• Maven + Geb
• https://github.com/geb/geb-example-maven
• Grails + Geb
• https://github.com/lyhcode/grails-realestate
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
官⽅方學習資源
www.gebish.org/manual/current/
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
我的教學⽂文章
1. Groovy Tutorial(7)使⽤用 Geb 開發 Web Test 網站⾃自動化測試(上)
2. Groovy Tutorial(8)使⽤用 Geb 開發 Web Test 網站⾃自動化測試(中)
3. Groovy Tutorial(9)使⽤用 Geb 開發 Web Test 網站⾃自動化測試(下)
www.codedata.com.tw/tag/groovy/
#JCConf
JCConfTW
2014
Geb
(pronounced“jeb”)
我的電⼦子書
限
時
免
費
正體中⽂文版
learngeb.readbook.tw
#JCConf
線上直接閱讀全⽂文
PDF, ePub, Kindle
離線閱讀電⼦子書檔案格式下載
幫推、按讚、分享
learngeb.readbook.tw
#JCConf
learngeb.readbook.tw
#JCConf
Thank You
Q & A
lyhcode@gmail.com
lyhcode.info

Weitere ähnliche Inhalte

Was ist angesagt?

[CLIW] Web testing
[CLIW] Web testing[CLIW] Web testing
[CLIW] Web testingBogdan Gaza
 
20160905 - BrisJS - nightwatch testing
20160905 - BrisJS - nightwatch testing20160905 - BrisJS - nightwatch testing
20160905 - BrisJS - nightwatch testingVladimir Roudakov
 
Node.js and Selenium Webdriver, a journey from the Java side
Node.js and Selenium Webdriver, a journey from the Java sideNode.js and Selenium Webdriver, a journey from the Java side
Node.js and Selenium Webdriver, a journey from the Java sideMek Srunyu Stittri
 
Browser Automated Testing Frameworks - Nightwatch.js
Browser Automated Testing Frameworks - Nightwatch.jsBrowser Automated Testing Frameworks - Nightwatch.js
Browser Automated Testing Frameworks - Nightwatch.jsLuís Bastião Silva
 
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie..."How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...Fwdays
 
High Performance JavaScript 2011
High Performance JavaScript 2011High Performance JavaScript 2011
High Performance JavaScript 2011Nicholas Zakas
 
Test-Driven JavaScript Development (JavaZone 2010)
Test-Driven JavaScript Development (JavaZone 2010)Test-Driven JavaScript Development (JavaZone 2010)
Test-Driven JavaScript Development (JavaZone 2010)Christian Johansen
 
Automated Frontend Testing
Automated Frontend TestingAutomated Frontend Testing
Automated Frontend TestingNeil Crosby
 
Fullstack End-to-end test automation with Node.js, one year later
Fullstack End-to-end test automation with Node.js, one year laterFullstack End-to-end test automation with Node.js, one year later
Fullstack End-to-end test automation with Node.js, one year laterMek Srunyu Stittri
 
Continous Delivering a PHP application
Continous Delivering a PHP applicationContinous Delivering a PHP application
Continous Delivering a PHP applicationJavier López
 
One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.Javier López
 
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016Gavin Pickin
 
Efficient JavaScript Unit Testing, May 2012
Efficient JavaScript Unit Testing, May 2012Efficient JavaScript Unit Testing, May 2012
Efficient JavaScript Unit Testing, May 2012Hazem Saleh
 
Front-End Testing: Demystified
Front-End Testing: DemystifiedFront-End Testing: Demystified
Front-End Testing: DemystifiedSeth McLaughlin
 
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and GulpOptimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and GulpMatthew Davis
 
JCConf 2015 workshop 動手玩 Java 專案建置工具
JCConf 2015 workshop 動手玩 Java 專案建置工具JCConf 2015 workshop 動手玩 Java 專案建置工具
JCConf 2015 workshop 動手玩 Java 專案建置工具謝 宗穎
 
Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)
Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)
Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)Cogapp
 
Hitchhiker's guide to the front end development
Hitchhiker's guide to the front end developmentHitchhiker's guide to the front end development
Hitchhiker's guide to the front end development정윤 김
 
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7Max Andersen
 

Was ist angesagt? (20)

[CLIW] Web testing
[CLIW] Web testing[CLIW] Web testing
[CLIW] Web testing
 
20160905 - BrisJS - nightwatch testing
20160905 - BrisJS - nightwatch testing20160905 - BrisJS - nightwatch testing
20160905 - BrisJS - nightwatch testing
 
Node.js and Selenium Webdriver, a journey from the Java side
Node.js and Selenium Webdriver, a journey from the Java sideNode.js and Selenium Webdriver, a journey from the Java side
Node.js and Selenium Webdriver, a journey from the Java side
 
Browser Automated Testing Frameworks - Nightwatch.js
Browser Automated Testing Frameworks - Nightwatch.jsBrowser Automated Testing Frameworks - Nightwatch.js
Browser Automated Testing Frameworks - Nightwatch.js
 
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie..."How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
 
High Performance JavaScript 2011
High Performance JavaScript 2011High Performance JavaScript 2011
High Performance JavaScript 2011
 
Test-Driven JavaScript Development (JavaZone 2010)
Test-Driven JavaScript Development (JavaZone 2010)Test-Driven JavaScript Development (JavaZone 2010)
Test-Driven JavaScript Development (JavaZone 2010)
 
Automated Frontend Testing
Automated Frontend TestingAutomated Frontend Testing
Automated Frontend Testing
 
Fullstack End-to-end test automation with Node.js, one year later
Fullstack End-to-end test automation with Node.js, one year laterFullstack End-to-end test automation with Node.js, one year later
Fullstack End-to-end test automation with Node.js, one year later
 
Continous Delivering a PHP application
Continous Delivering a PHP applicationContinous Delivering a PHP application
Continous Delivering a PHP application
 
One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.
 
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
 
Efficient JavaScript Unit Testing, May 2012
Efficient JavaScript Unit Testing, May 2012Efficient JavaScript Unit Testing, May 2012
Efficient JavaScript Unit Testing, May 2012
 
Front-End Testing: Demystified
Front-End Testing: DemystifiedFront-End Testing: Demystified
Front-End Testing: Demystified
 
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and GulpOptimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
 
JCConf 2015 workshop 動手玩 Java 專案建置工具
JCConf 2015 workshop 動手玩 Java 專案建置工具JCConf 2015 workshop 動手玩 Java 專案建置工具
JCConf 2015 workshop 動手玩 Java 專案建置工具
 
Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)
Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)
Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)
 
Hitchhiker's guide to the front end development
Hitchhiker's guide to the front end developmentHitchhiker's guide to the front end development
Hitchhiker's guide to the front end development
 
Acceptance tests
Acceptance testsAcceptance tests
Acceptance tests
 
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
 

Ähnlich wie 淺談 Geb 網站自動化測試(JCConf 2014)

WeCode IL: Confessions of a java developer that fell in love with the groovy...
WeCode IL:  Confessions of a java developer that fell in love with the groovy...WeCode IL:  Confessions of a java developer that fell in love with the groovy...
WeCode IL: Confessions of a java developer that fell in love with the groovy...Victor Trakhtenberg
 
Javascript Apps at Build Artifacts
Javascript Apps at Build ArtifactsJavascript Apps at Build Artifacts
Javascript Apps at Build ArtifactsClay Smith
 
Stanislaw potoczny kra_qa_21.01.20
Stanislaw potoczny kra_qa_21.01.20Stanislaw potoczny kra_qa_21.01.20
Stanislaw potoczny kra_qa_21.01.20kraqa
 
greach 2014 marco vermeulen bdd using cucumber jvm and groovy
greach 2014 marco vermeulen bdd using cucumber jvm and groovygreach 2014 marco vermeulen bdd using cucumber jvm and groovy
greach 2014 marco vermeulen bdd using cucumber jvm and groovyJessie Evangelista
 
Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finessemzgubin
 
Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finessemzgubin
 
Grooving with Jenkins
Grooving with JenkinsGrooving with Jenkins
Grooving with JenkinsAnton Weiss
 
Taming Functional Web Testing with Spock and Geb
Taming Functional Web Testing with Spock and GebTaming Functional Web Testing with Spock and Geb
Taming Functional Web Testing with Spock and GebC4Media
 
Groovy And Grails Introduction
Groovy And Grails IntroductionGroovy And Grails Introduction
Groovy And Grails IntroductionEric Weimer
 
Java.il - Confessions of a java developer that fell in love with the groovy l...
Java.il - Confessions of a java developer that fell in love with the groovy l...Java.il - Confessions of a java developer that fell in love with the groovy l...
Java.il - Confessions of a java developer that fell in love with the groovy l...Victor Trakhtenberg
 
Java Web Start czyli jak żyć z tą dziwną technologią & Continuous Delivery w ...
Java Web Start czyli jak żyć z tą dziwną technologią & Continuous Delivery w ...Java Web Start czyli jak żyć z tą dziwną technologią & Continuous Delivery w ...
Java Web Start czyli jak żyć z tą dziwną technologią & Continuous Delivery w ...MarcinStachniuk
 
Geb quick start
Geb quick startGeb quick start
Geb quick startSukjin Yun
 
Creating a Responsive Website From Scratch
Creating a Responsive Website From ScratchCreating a Responsive Website From Scratch
Creating a Responsive Website From ScratchCorky Brown
 
Play Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level OverviewPlay Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level OverviewJosh Padnick
 
PhoneGap:你应该知道的12件事
PhoneGap:你应该知道的12件事PhoneGap:你应该知道的12件事
PhoneGap:你应该知道的12件事longfei.dong
 
Dsl로 만나는 groovy
Dsl로 만나는 groovyDsl로 만나는 groovy
Dsl로 만나는 groovySeeyoung Chang
 
Javascript testing should be awesome
Javascript testing should be awesomeJavascript testing should be awesome
Javascript testing should be awesomeAbderrazak BOUADMA
 
Grails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon ValleyGrails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon ValleySven Haiges
 
Best of brew city presentation final
Best of brew city presentation finalBest of brew city presentation final
Best of brew city presentation finalEzekiel Chentnik
 

Ähnlich wie 淺談 Geb 網站自動化測試(JCConf 2014) (20)

WeCode IL: Confessions of a java developer that fell in love with the groovy...
WeCode IL:  Confessions of a java developer that fell in love with the groovy...WeCode IL:  Confessions of a java developer that fell in love with the groovy...
WeCode IL: Confessions of a java developer that fell in love with the groovy...
 
Javascript Apps at Build Artifacts
Javascript Apps at Build ArtifactsJavascript Apps at Build Artifacts
Javascript Apps at Build Artifacts
 
Stanislaw potoczny kra_qa_21.01.20
Stanislaw potoczny kra_qa_21.01.20Stanislaw potoczny kra_qa_21.01.20
Stanislaw potoczny kra_qa_21.01.20
 
Whats New In Groovy 1.6?
Whats New In Groovy 1.6?Whats New In Groovy 1.6?
Whats New In Groovy 1.6?
 
greach 2014 marco vermeulen bdd using cucumber jvm and groovy
greach 2014 marco vermeulen bdd using cucumber jvm and groovygreach 2014 marco vermeulen bdd using cucumber jvm and groovy
greach 2014 marco vermeulen bdd using cucumber jvm and groovy
 
Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finesse
 
Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finesse
 
Grooving with Jenkins
Grooving with JenkinsGrooving with Jenkins
Grooving with Jenkins
 
Taming Functional Web Testing with Spock and Geb
Taming Functional Web Testing with Spock and GebTaming Functional Web Testing with Spock and Geb
Taming Functional Web Testing with Spock and Geb
 
Groovy And Grails Introduction
Groovy And Grails IntroductionGroovy And Grails Introduction
Groovy And Grails Introduction
 
Java.il - Confessions of a java developer that fell in love with the groovy l...
Java.il - Confessions of a java developer that fell in love with the groovy l...Java.il - Confessions of a java developer that fell in love with the groovy l...
Java.il - Confessions of a java developer that fell in love with the groovy l...
 
Java Web Start czyli jak żyć z tą dziwną technologią & Continuous Delivery w ...
Java Web Start czyli jak żyć z tą dziwną technologią & Continuous Delivery w ...Java Web Start czyli jak żyć z tą dziwną technologią & Continuous Delivery w ...
Java Web Start czyli jak żyć z tą dziwną technologią & Continuous Delivery w ...
 
Geb quick start
Geb quick startGeb quick start
Geb quick start
 
Creating a Responsive Website From Scratch
Creating a Responsive Website From ScratchCreating a Responsive Website From Scratch
Creating a Responsive Website From Scratch
 
Play Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level OverviewPlay Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level Overview
 
PhoneGap:你应该知道的12件事
PhoneGap:你应该知道的12件事PhoneGap:你应该知道的12件事
PhoneGap:你应该知道的12件事
 
Dsl로 만나는 groovy
Dsl로 만나는 groovyDsl로 만나는 groovy
Dsl로 만나는 groovy
 
Javascript testing should be awesome
Javascript testing should be awesomeJavascript testing should be awesome
Javascript testing should be awesome
 
Grails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon ValleyGrails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon Valley
 
Best of brew city presentation final
Best of brew city presentation finalBest of brew city presentation final
Best of brew city presentation final
 

Mehr von Kyle Lin

物件導向系統分析與設計(建國)
物件導向系統分析與設計(建國)物件導向系統分析與設計(建國)
物件導向系統分析與設計(建國)Kyle Lin
 
Android 智慧型手機程式設計
Android 智慧型手機程式設計Android 智慧型手機程式設計
Android 智慧型手機程式設計Kyle Lin
 
淺談 Groovy 與 AWS 雲端應用開發整合
淺談 Groovy 與 AWS 雲端應用開發整合淺談 Groovy 與 AWS 雲端應用開發整合
淺談 Groovy 與 AWS 雲端應用開發整合Kyle Lin
 
行動應用開發實務 - Gradle 介紹
行動應用開發實務 - Gradle 介紹行動應用開發實務 - Gradle 介紹
行動應用開發實務 - Gradle 介紹Kyle Lin
 
2013 TQC+ Java 認證研習簡報
2013 TQC+ Java 認證研習簡報2013 TQC+ Java 認證研習簡報
2013 TQC+ Java 認證研習簡報Kyle Lin
 
FarmLogs 農場管理軟體預覽
FarmLogs 農場管理軟體預覽FarmLogs 農場管理軟體預覽
FarmLogs 農場管理軟體預覽Kyle Lin
 
TQC+物件導向程式語言Java認證班(和春資工)
TQC+物件導向程式語言Java認證班(和春資工)TQC+物件導向程式語言Java認證班(和春資工)
TQC+物件導向程式語言Java認證班(和春資工)Kyle Lin
 
Wiki 簡介與操作說明
Wiki 簡介與操作說明Wiki 簡介與操作說明
Wiki 簡介與操作說明Kyle Lin
 
Tqc+ 物件導向程式語言(java)認證研習會
Tqc+ 物件導向程式語言(java)認證研習會Tqc+ 物件導向程式語言(java)認證研習會
Tqc+ 物件導向程式語言(java)認證研習會Kyle Lin
 
ContPub 雲端電子書自助出版平台
ContPub 雲端電子書自助出版平台ContPub 雲端電子書自助出版平台
ContPub 雲端電子書自助出版平台Kyle Lin
 
TQC+團報系統學生版(雲科資管)
TQC+團報系統學生版(雲科資管)TQC+團報系統學生版(雲科資管)
TQC+團報系統學生版(雲科資管)Kyle Lin
 
TQC+ Java 認證研習
TQC+ Java 認證研習TQC+ Java 認證研習
TQC+ Java 認證研習Kyle Lin
 
20101220架構討論
20101220架構討論20101220架構討論
20101220架構討論Kyle Lin
 
Asp net (1)
Asp net  (1)Asp net  (1)
Asp net (1)Kyle Lin
 
iisnode Test Drive
iisnode Test Driveiisnode Test Drive
iisnode Test DriveKyle Lin
 
開放源碼電子書與EPUB幕後排版
開放源碼電子書與EPUB幕後排版開放源碼電子書與EPUB幕後排版
開放源碼電子書與EPUB幕後排版Kyle Lin
 
TQC+ Java 全國教師研習會 PLWeb 介紹
TQC+ Java 全國教師研習會 PLWeb 介紹TQC+ Java 全國教師研習會 PLWeb 介紹
TQC+ Java 全國教師研習會 PLWeb 介紹Kyle Lin
 
Modern Browser as a Programming Editor
Modern Browser as a Programming EditorModern Browser as a Programming Editor
Modern Browser as a Programming EditorKyle Lin
 

Mehr von Kyle Lin (19)

物件導向系統分析與設計(建國)
物件導向系統分析與設計(建國)物件導向系統分析與設計(建國)
物件導向系統分析與設計(建國)
 
Android 智慧型手機程式設計
Android 智慧型手機程式設計Android 智慧型手機程式設計
Android 智慧型手機程式設計
 
淺談 Groovy 與 AWS 雲端應用開發整合
淺談 Groovy 與 AWS 雲端應用開發整合淺談 Groovy 與 AWS 雲端應用開發整合
淺談 Groovy 與 AWS 雲端應用開發整合
 
行動應用開發實務 - Gradle 介紹
行動應用開發實務 - Gradle 介紹行動應用開發實務 - Gradle 介紹
行動應用開發實務 - Gradle 介紹
 
2013 TQC+ Java 認證研習簡報
2013 TQC+ Java 認證研習簡報2013 TQC+ Java 認證研習簡報
2013 TQC+ Java 認證研習簡報
 
FarmLogs 農場管理軟體預覽
FarmLogs 農場管理軟體預覽FarmLogs 農場管理軟體預覽
FarmLogs 農場管理軟體預覽
 
TQC+物件導向程式語言Java認證班(和春資工)
TQC+物件導向程式語言Java認證班(和春資工)TQC+物件導向程式語言Java認證班(和春資工)
TQC+物件導向程式語言Java認證班(和春資工)
 
Wiki 簡介與操作說明
Wiki 簡介與操作說明Wiki 簡介與操作說明
Wiki 簡介與操作說明
 
Tqc+ 物件導向程式語言(java)認證研習會
Tqc+ 物件導向程式語言(java)認證研習會Tqc+ 物件導向程式語言(java)認證研習會
Tqc+ 物件導向程式語言(java)認證研習會
 
ContPub 雲端電子書自助出版平台
ContPub 雲端電子書自助出版平台ContPub 雲端電子書自助出版平台
ContPub 雲端電子書自助出版平台
 
TQC+團報系統學生版(雲科資管)
TQC+團報系統學生版(雲科資管)TQC+團報系統學生版(雲科資管)
TQC+團報系統學生版(雲科資管)
 
TQC+ Java 認證研習
TQC+ Java 認證研習TQC+ Java 認證研習
TQC+ Java 認證研習
 
20101220架構討論
20101220架構討論20101220架構討論
20101220架構討論
 
Asp net (1)
Asp net  (1)Asp net  (1)
Asp net (1)
 
Asp net
Asp net Asp net
Asp net
 
iisnode Test Drive
iisnode Test Driveiisnode Test Drive
iisnode Test Drive
 
開放源碼電子書與EPUB幕後排版
開放源碼電子書與EPUB幕後排版開放源碼電子書與EPUB幕後排版
開放源碼電子書與EPUB幕後排版
 
TQC+ Java 全國教師研習會 PLWeb 介紹
TQC+ Java 全國教師研習會 PLWeb 介紹TQC+ Java 全國教師研習會 PLWeb 介紹
TQC+ Java 全國教師研習會 PLWeb 介紹
 
Modern Browser as a Programming Editor
Modern Browser as a Programming EditorModern Browser as a Programming Editor
Modern Browser as a Programming Editor
 

Kürzlich hochgeladen

Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 

Kürzlich hochgeladen (20)

Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 

淺談 Geb 網站自動化測試(JCConf 2014)