2. Xpath does not query by text well <div>This is <b>Bold</b></div> //div[text()=‘This is Bold’] ? _div(“This is Bold”) Waits are needed at each step Explicit waits: Have to code for worst case scenario Implicit waits: Recover and retry Tester is forced to understand HTML structures and Javascript nuances. Common Problems
3. Proxy based approach Injects Javascript into browser Any Javascript enabled browser, any OS Drives a real browser Identifies elements smartly Implicitly waits for AJAX, page loads and timeouts Sahi – Web Test Automation Tool
5. Visible properties take precedence Tests should reflect what the tester sees Not what the developer wrote Frames, iframes, layouts are all developer aids to partition information. They need not be visible in tests, though they should be assertable. Waits are inherent in a web application and should be automatically handled Sahi Philosophy
6. Use various visible attributes first Text, Value, Alt, Title etc. Allow identification in a context _checkbox(“x”, _near(_cell(“name”))) Allow Regular Expression and fuzzy matches Normalize white spaces across browsers Automatically look through frames and iframes. Sahi Identification Strategy
7. The simplest possible thing What is not allowed by the Browser Sandbox, delegate to proxy File Uploads 401 Authentication File downloads Browsers may change Javascript and Proxies are here to stay Proxy based approach
8. Allows recording, debugging and object identification on any browser via injected Javascript Can add automation on the fly Even wrap flash/applets etc. when needed Moving between domains, even accessing multi domains in frames/iframes are possible. Proxy based approach
9. Allows powerful Sahi APIs, normalized across browsers Allows monitoring of AJAX requests and Frame loads to automatically wait till no activity Javascript events do not require focus, allowing parallel playback Injected Javascript