2. Overview (ou uma tentativa) Motivação Características Componentes O Selenês Sintaxe Localizando elementos Command set Selenium IDE Ferramentas auxiliares Gotcha's e dicas Stop! - Selenium IDE hands on Selenium RC Stop! - Selenium RC hands on Selenium na intelie ....
7. Características Open source (Apache 2.0 license) Suporte a maioria dos browsers: (Firefox 2/3, Safari 1/2/3, Opera 8/9, Google Chrome, um tal de IE 7/8, outro (RC)) Muito simples: curva de aprendizado suave API (Selenium RC) para diversas linguagens: HTML, Java, C#, Perl, PHP, Python and Ruby
15. Localizando elementos - Identifier Retorna o primeiro elemento com o dado id/name HTML: <form id="loginForm"> Selenium target: identifier=loginForm
16. Localizando elementos - DOM Javascript document way HTML: <form id="loginForm"> Selenium target: dom=document.getElementById('loginForm')
17. Localizando elementos - XPath XPath foi criado especificamente para navegar entre os elementos e atributos de um documento XML. HTML: <form id="loginForm"> Selenium target: xpath=//form[@id='loginForm']
20. Command set - Actions Alteram o estado da aplicação open check clickAndWait focus keyPress type close ....
21. Command set - Accessors Examinam o estado da aplicação e armazenam seus resultados em variáveis storeElementHeight storeElementPositionLeft storeEval storeValue ....
22. Command set - Assertions Verificam se o estado da aplicação está de acordo com o esperado assertAllLinks assertConfirmation assertTextPresent assertTitle ....
27. Gotcha's e dicas Não dependa da estrutura Não defina locators como esse: xpath=//body/div/div/a[contains(text(), 'bug tracker')] Dependente da estrutura do DOM Difícil manutenção!
28. Gotcha's e dicas Tempo de carregamento: aplicações AJAX Actions do tipo /(.*)andWait/ não funcionam com AJAX Use /waitFor(.*)/ Ex.: waitForElementPresent waitForVisible
33. Adobe Aetna AIG Alcatel-Lucent Amazon.com Best Buy Boeing Borland CA Canon Capgemini Cisco CNN Dow Jones & Co. EMC Fidelity General Electric Hallmark HP HSBC IBM Mott MacDonald NATO NetApp Nortel Northrop Grumman Panasonic Pixar Animation Studios Qualcomm, Inc. S&P SAP Siemens Sony Symantec Visa International more
34. Problema And /^I have added a "([^amp;quot;]*)" property with a "([^amp;quot;]*)" type$/ do |name, type| @browser.wait_for_element_present "//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-grid3-row-first')]//tr//*[contains(text(), 'Nome')]" @browser.click_at "//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-grid3-row-first')]//tr//*[contains(text(), 'Nome')]", "0,0" @browser.wait_for_element_present "//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-small-editor')]//input" @browser.wait_for_editable "//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-small-editor')]//input" @browser.type "//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-small-editor')]//input[parent::div[not(contains(@style, 'hidden'))]]", "#{name}" @browser.wait_for_element_present "//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-small-editor')]//input[parent::div[not(contains(@style, 'hidden'))]]" @browser.click_at "//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-grid3-row-first')]//tr//td[4]", "0,0" @browser.wait_for_element_present "//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-small-editor')]//input[contains(@class, 'x-form-focus')]" @browser.click_at "//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-small-editor')]//input[contains(@class, 'x-form-focus')]", "0,0" @browser.wait_for_element_present "//div[contains(@class, 'x-combo-list-item') and contains(text(),'#{type}')]" @browser.click_at "//div[contains(@class, 'x-combo-list-item') and contains(text(),'#{type}')]", "0,0"