SlideShare ist ein Scribd-Unternehmen logo
1 von 20
@laojala
Robot Framework For
Beginners + What was new
in Robocon 2019
Laura Ojala
Laura.ojala@prove.fi
Twitter, Github, Instagram, LinkedIn: @laojala
2019/02/19
@laojala
Agenda
• What is Robot Framework?
• How to install and use it?
• Let’s code: Demo using SeleniumLibrary
• Tips for locating html elements
• Real life demo
• Further resources for individual learning
• What’s new in Robot Framework Community
• Demo with White Library (Ville Runtti)
17-18
18-19
@laojala
About me
• Robot Framework user since ~2013 (mainly
Selenium library)
• M.Sc in Technology
• 2006-2010: Medical device start up
• 2010-> Agile tester, consultant (Helsinki&Oulu)
• Current interests: JavaScript
Twitter, Github, Instagram, LinkedIn: @laojala
@laojala
What is Robot Framework?
• Generic test automation framework for end-to-end/acceptance testing
• Open source, rich ecosystem and very active community
• Great documentation: https://robotframework.org/
• Clear reports, detailed logs
• Editor support
• Various libraries
Further reading:
https://www.linkedin.com/pulse/common-misconceptions-robot-framework-jani-gr%C
@laojala
Only 3 steps
needed for
setup:
(web page testing
with Selenium
library)
1.Install Python (version 3):
https://www.python.org/downloads/
2.then, run these in the command line:
pip install robotframework
pip install robotframework-seleniumlibrary​
1.and add chromedriver exe to a folder that is
in the path:
http://chromedriver.chromium.org/
Further reading: Installation instructions
https://github.com/robotframework/robotframework/blob/master/INSTALL.rst
@laojala
Simple Demo
@laojala
Running tests
To run all test cases in this forder and it’s
subfolders:
> robot .
Or, to run all test cases where name starts
with ”simpl”:
> robot -t simpl* .
Or, to run all test cases with a tag ”SMOKE”
in a folder webshop:
> robot –i SMOKE webshop
@laojala
Reports
@laojala
Keywords: Selenium Library for website
testing
Example keyword: Input Text
Usage in a robot test case:
@laojala
Locating elements
• Locators point to the html elements in a web page
• CSS locators are recommended over XPATH, as CSS is more widely used among developers (also,
it might be slightly faster)
• If needed, ask that coders add unique id’s (when possible)
• Use browser’s developer tools (console or elements) to locate elements and check if element
exists on a page:
• Resources: xpath and css selectors
• https://www.red-gate.com/simple-talk/dotnet/net-framework/xpath-css-dom-and-selenium-the-roset
@laojala
Example: css locators
@laojala
Real life demo
@laojala
Resouces
• https://robotframework.org/
• If you only read one document, I recommend this one:
How to write good test cases using Robot Framework or same in
slide set
• Everything that is needed in User Guide
• Quick start guide
• Community: Slack, Google groups, Twitter
@laojala
Robocon 2019, Helsinki
3 things I took home with me:
@laojala
Learning 1: Robotic process automation
(RPA)
• RPA is a huge and growing market
• Objective: Make RF the number one open source RPA ecosystem
• Everyone who knows Robot Framework, knows RPA
@laojala
Robotic process automation (RPA)
continues:
• Robot Framework major release 3.1 includes support for RPA
• ”Switching label test to task :-D
• San Francisco based start up for open source RPA:
https://robocorptech.com/
• Talk here: https://youtu.be/uv6dvcoxdvU
@laojala
Learning 2: Interesting DevOps: Dynamically
scalable test environment on top of
Kubernetes
• Creating scalable, unified browser testing environment in a cloud
• Technologies used:
• Zalenium: https://github.com/zalando/zalenium
• Selenium Grid extension to scale a local grid dynamically with Docker/Kubernetes
containers
• Integrates with a cloud test provider (Sauce Labs, BrowserStack, TestingBot)
• Pabot (paraller execution of Robot Framework testcases):
https://github.com/mkorpela/pabot
• Original talk: https://youtu.be/ivLsjU77Q6c
@laojala
Learning 3: test automation is a whole team approach.
Add automation as a living part of your build paths and
make it everyones responsibility
Great talk for anyone
who is working with the
automation (how to
communicate benefits
and make quality a whole
team approach):
https://youtu.be/0q4-
AjqpO9M
@laojala
@laojala
All conference talks online:
https://www.youtube.com/playlist?list=PLSK6YK5OGX1D-
QpVap5C7NlfurQ1dsGbt
There was also many more great presentations such as model based
testing, JupyterLab/Notebook integration, how Robot Framework
boosts testing in different domains, how to maintain test libraries etc.
Thank you!

Weitere ähnliche Inhalte

Was ist angesagt?

Robot framework
Robot frameworkRobot framework
Robot framework
boriau
 

Was ist angesagt? (20)

Robot Framework : Lord of the Rings By Asheesh M
Robot Framework : Lord of the Rings By Asheesh MRobot Framework : Lord of the Rings By Asheesh M
Robot Framework : Lord of the Rings By Asheesh M
 
ATDD Using Robot Framework
ATDD Using Robot FrameworkATDD Using Robot Framework
ATDD Using Robot Framework
 
Acceptance testing plone sites and add ons with robot framework and selenium
Acceptance testing plone sites and add ons with robot framework and seleniumAcceptance testing plone sites and add ons with robot framework and selenium
Acceptance testing plone sites and add ons with robot framework and selenium
 
JavaCro'14 - Test Automation using RobotFramework Libraries – Stojan Peshov
JavaCro'14 - Test Automation using RobotFramework Libraries – Stojan PeshovJavaCro'14 - Test Automation using RobotFramework Libraries – Stojan Peshov
JavaCro'14 - Test Automation using RobotFramework Libraries – Stojan Peshov
 
Robot framework - Lord of the Rings
Robot framework - Lord of the RingsRobot framework - Lord of the Rings
Robot framework - Lord of the Rings
 
Introduction to robot framework
Introduction to robot frameworkIntroduction to robot framework
Introduction to robot framework
 
Scripting robot
Scripting robotScripting robot
Scripting robot
 
Robot Framework Dos And Don'ts
Robot Framework Dos And Don'tsRobot Framework Dos And Don'ts
Robot Framework Dos And Don'ts
 
Robot Framework Introduction
Robot Framework IntroductionRobot Framework Introduction
Robot Framework Introduction
 
Introduction to Robot Framework – Exove
Introduction to Robot Framework – ExoveIntroduction to Robot Framework – Exove
Introduction to Robot Framework – Exove
 
Robot Framework with actual robot
Robot Framework with actual robot Robot Framework with actual robot
Robot Framework with actual robot
 
Barcamp Bangkhen :: Robot Framework
Barcamp Bangkhen :: Robot FrameworkBarcamp Bangkhen :: Robot Framework
Barcamp Bangkhen :: Robot Framework
 
Network Protocol Testing Using Robot Framework
Network Protocol Testing Using Robot FrameworkNetwork Protocol Testing Using Robot Framework
Network Protocol Testing Using Robot Framework
 
Robot framework
Robot frameworkRobot framework
Robot framework
 
Robot Framework :: Demo login application
Robot Framework :: Demo login applicationRobot Framework :: Demo login application
Robot Framework :: Demo login application
 
Robotframework
RobotframeworkRobotframework
Robotframework
 
Robotframework Presentation - Pinoy Python Meetup 2011January12
Robotframework Presentation - Pinoy Python Meetup 2011January12Robotframework Presentation - Pinoy Python Meetup 2011January12
Robotframework Presentation - Pinoy Python Meetup 2011January12
 
Robot framework
Robot frameworkRobot framework
Robot framework
 
Acceptance Test Drive Development with Robot Framework
Acceptance Test Drive Development with Robot FrameworkAcceptance Test Drive Development with Robot Framework
Acceptance Test Drive Development with Robot Framework
 
Integration Group - Robot Framework
Integration Group - Robot Framework Integration Group - Robot Framework
Integration Group - Robot Framework
 

Ähnlich wie Robot Framework for beginners and what is new at 2019

Building rich interface components with SharePoint
Building rich interface components with SharePointBuilding rich interface components with SharePoint
Building rich interface components with SharePoint
Louis-Philippe Lavoie
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
Lucas Jellema
 

Ähnlich wie Robot Framework for beginners and what is new at 2019 (20)

Citizen Developer Tools (session at SharePoint Saturday Houston 4/28/2018) by...
Citizen Developer Tools (session at SharePoint Saturday Houston 4/28/2018) by...Citizen Developer Tools (session at SharePoint Saturday Houston 4/28/2018) by...
Citizen Developer Tools (session at SharePoint Saturday Houston 4/28/2018) by...
 
Personal learning networks
Personal learning networksPersonal learning networks
Personal learning networks
 
360|Flex Recap - San Jose 2010
360|Flex Recap - San Jose 2010360|Flex Recap - San Jose 2010
360|Flex Recap - San Jose 2010
 
Guide to open source
Guide to open source Guide to open source
Guide to open source
 
LTI Advantage: The Next Big Thing in LMS Integration
LTI Advantage: The Next Big Thing in LMS IntegrationLTI Advantage: The Next Big Thing in LMS Integration
LTI Advantage: The Next Big Thing in LMS Integration
 
Prototyping like it is 2022
Prototyping like it is 2022 Prototyping like it is 2022
Prototyping like it is 2022
 
IT Systems for Knowledge Management used in Software Engineering (2010)
IT Systems for Knowledge Management used in Software Engineering (2010)IT Systems for Knowledge Management used in Software Engineering (2010)
IT Systems for Knowledge Management used in Software Engineering (2010)
 
Create great cncf user base from lessons learned from other open source com...
Create great cncf user base from   lessons learned from other open source com...Create great cncf user base from   lessons learned from other open source com...
Create great cncf user base from lessons learned from other open source com...
 
RoboCon 2018: How did we get here? Where do we go next?
RoboCon 2018: How did we get here? Where do we go next?RoboCon 2018: How did we get here? Where do we go next?
RoboCon 2018: How did we get here? Where do we go next?
 
Create Great CNCF User-Base from Lessons Learned from Other Open Source Commu...
Create Great CNCF User-Base from Lessons Learned from Other Open Source Commu...Create Great CNCF User-Base from Lessons Learned from Other Open Source Commu...
Create Great CNCF User-Base from Lessons Learned from Other Open Source Commu...
 
BaaS Comparison - iOS.mn
BaaS Comparison - iOS.mnBaaS Comparison - iOS.mn
BaaS Comparison - iOS.mn
 
Dnug2012 yellow and blue stream
Dnug2012 yellow and blue streamDnug2012 yellow and blue stream
Dnug2012 yellow and blue stream
 
Building rich interface components with SharePoint
Building rich interface components with SharePointBuilding rich interface components with SharePoint
Building rich interface components with SharePoint
 
Enterprise 2.0 with Open Source Frameworks like Agorava
Enterprise 2.0 with Open Source Frameworks like AgoravaEnterprise 2.0 with Open Source Frameworks like Agorava
Enterprise 2.0 with Open Source Frameworks like Agorava
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
 
Building the NGDLE with Tsugi (次) and Koseu(코스)
Building the NGDLE with Tsugi (次) and Koseu(코스)Building the NGDLE with Tsugi (次) and Koseu(코스)
Building the NGDLE with Tsugi (次) and Koseu(코스)
 
Apache Geode - The First Six Months
Apache Geode -  The First Six MonthsApache Geode -  The First Six Months
Apache Geode - The First Six Months
 
Drupal and Apache Stanbol
Drupal and Apache StanbolDrupal and Apache Stanbol
Drupal and Apache Stanbol
 
API Documentation Workshop tcworld India 2015
API Documentation Workshop tcworld India 2015API Documentation Workshop tcworld India 2015
API Documentation Workshop tcworld India 2015
 
Citizen Developer Tools (session at SharePoint Saturday Twin Cities 4/14/2018...
Citizen Developer Tools (session at SharePoint Saturday Twin Cities 4/14/2018...Citizen Developer Tools (session at SharePoint Saturday Twin Cities 4/14/2018...
Citizen Developer Tools (session at SharePoint Saturday Twin Cities 4/14/2018...
 

Kürzlich hochgeladen

introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
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
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Kürzlich hochgeladen (20)

Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.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
 
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
 
Pharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyPharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodology
 
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...
 
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
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
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 🔝✔️✔️
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
 
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
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 

Robot Framework for beginners and what is new at 2019

  • 1. @laojala Robot Framework For Beginners + What was new in Robocon 2019 Laura Ojala Laura.ojala@prove.fi Twitter, Github, Instagram, LinkedIn: @laojala 2019/02/19
  • 2. @laojala Agenda • What is Robot Framework? • How to install and use it? • Let’s code: Demo using SeleniumLibrary • Tips for locating html elements • Real life demo • Further resources for individual learning • What’s new in Robot Framework Community • Demo with White Library (Ville Runtti) 17-18 18-19
  • 3. @laojala About me • Robot Framework user since ~2013 (mainly Selenium library) • M.Sc in Technology • 2006-2010: Medical device start up • 2010-> Agile tester, consultant (Helsinki&Oulu) • Current interests: JavaScript Twitter, Github, Instagram, LinkedIn: @laojala
  • 4. @laojala What is Robot Framework? • Generic test automation framework for end-to-end/acceptance testing • Open source, rich ecosystem and very active community • Great documentation: https://robotframework.org/ • Clear reports, detailed logs • Editor support • Various libraries Further reading: https://www.linkedin.com/pulse/common-misconceptions-robot-framework-jani-gr%C
  • 5. @laojala Only 3 steps needed for setup: (web page testing with Selenium library) 1.Install Python (version 3): https://www.python.org/downloads/ 2.then, run these in the command line: pip install robotframework pip install robotframework-seleniumlibrary​ 1.and add chromedriver exe to a folder that is in the path: http://chromedriver.chromium.org/ Further reading: Installation instructions https://github.com/robotframework/robotframework/blob/master/INSTALL.rst
  • 7. @laojala Running tests To run all test cases in this forder and it’s subfolders: > robot . Or, to run all test cases where name starts with ”simpl”: > robot -t simpl* . Or, to run all test cases with a tag ”SMOKE” in a folder webshop: > robot –i SMOKE webshop
  • 9. @laojala Keywords: Selenium Library for website testing Example keyword: Input Text Usage in a robot test case:
  • 10. @laojala Locating elements • Locators point to the html elements in a web page • CSS locators are recommended over XPATH, as CSS is more widely used among developers (also, it might be slightly faster) • If needed, ask that coders add unique id’s (when possible) • Use browser’s developer tools (console or elements) to locate elements and check if element exists on a page: • Resources: xpath and css selectors • https://www.red-gate.com/simple-talk/dotnet/net-framework/xpath-css-dom-and-selenium-the-roset
  • 13. @laojala Resouces • https://robotframework.org/ • If you only read one document, I recommend this one: How to write good test cases using Robot Framework or same in slide set • Everything that is needed in User Guide • Quick start guide • Community: Slack, Google groups, Twitter
  • 14. @laojala Robocon 2019, Helsinki 3 things I took home with me:
  • 15. @laojala Learning 1: Robotic process automation (RPA) • RPA is a huge and growing market • Objective: Make RF the number one open source RPA ecosystem • Everyone who knows Robot Framework, knows RPA
  • 16. @laojala Robotic process automation (RPA) continues: • Robot Framework major release 3.1 includes support for RPA • ”Switching label test to task :-D • San Francisco based start up for open source RPA: https://robocorptech.com/ • Talk here: https://youtu.be/uv6dvcoxdvU
  • 17. @laojala Learning 2: Interesting DevOps: Dynamically scalable test environment on top of Kubernetes • Creating scalable, unified browser testing environment in a cloud • Technologies used: • Zalenium: https://github.com/zalando/zalenium • Selenium Grid extension to scale a local grid dynamically with Docker/Kubernetes containers • Integrates with a cloud test provider (Sauce Labs, BrowserStack, TestingBot) • Pabot (paraller execution of Robot Framework testcases): https://github.com/mkorpela/pabot • Original talk: https://youtu.be/ivLsjU77Q6c
  • 18. @laojala Learning 3: test automation is a whole team approach. Add automation as a living part of your build paths and make it everyones responsibility Great talk for anyone who is working with the automation (how to communicate benefits and make quality a whole team approach): https://youtu.be/0q4- AjqpO9M
  • 20. @laojala All conference talks online: https://www.youtube.com/playlist?list=PLSK6YK5OGX1D- QpVap5C7NlfurQ1dsGbt There was also many more great presentations such as model based testing, JupyterLab/Notebook integration, how Robot Framework boosts testing in different domains, how to maintain test libraries etc. Thank you!

Hinweis der Redaktion

  1. Does not add complexity but helps in testing
  2. Antti Karjalainen