Виявляється, Selenium це набагато простіше ніж я думав. Щоб його встановити досить, як зазвичай написати
sudo pip install selenium
З читання раджу:
А зараз я спробую написати скрипт, який робить дві речі: залишає під цією публікацією коментар і перевіряє що на сторінці з’явився вміст цього коментаря… Такий собі тест-кейс:
from time import sleep from getpass import getpass, getuser from selenium import webdriver def main(): user = raw_input('Wordpress.com username: ') password = getpass('Password: ') print 'Starting browser ...' browser = webdriver.Firefox() # browser.maximize_window() login(browser, user, password) print 'Opening page' browser.get('http://bunyk.wordpress.com/2013/10/04/selenium-browser-automation/') comment = 'Hello from selenium on {platform} with {name} {version}'.format( platform=browser.capabilities['platform'], name=browser.capabilities['browserName'], version=browser.capabilities['version'], ) add_comment(browser, comment) assert comment in browser.page_source print 'Closing browser' browser.close() def add_comment(browser, text): print 'Filling comment field ...' textarea = browser.find_element_by_xpath('//*[@id="comment"]') textarea.clear() textarea.click() textarea.send_keys(text) print 'Waiting till submit button slides down ...' sleep(1) print 'Submiting comment ...' browser.find_element_by_xpath('//*[@id="comment-submit"]').click() def login(browser, user, password): print 'Logging in ...' browser.get('http://%s.wordpress.com/wp-login.php' % user) login = browser.find_element_by_xpath('//*[@id="user_login"]') login.clear() login.send_keys(user) pwd = browser.find_element_by_xpath('//*[@id="user_pass"]') pwd.clear() pwd.send_keys(password) browser.find_element_by_xpath('//*[@id="wp-submit"]').click() print 'Login form submitted' if __name__ == '__main__': main()
Також мушу зауважити ще наступне. Firebug дуже допомагає при розробці, даючи нам xpath селектори потрібних елементів сторінки. Але, якщо ми наприклад працюємо з Ext.js, вона дає елементам дивні id на зразок DialogButton-1306-btnEl
, де число змінюється випадковим чином. Тому треба писати не простий xpath, а хитро*зроблений:
# ok = browser.xpath('//*[@id="DialogButton-1306-btnEl"]') ok = browser.xpath('//button[contains(., "OK")]')
P.S. Автоматизація це круто. Особливо автоматизація клацань мишкою… Хоча звісно буває не легко.
Filed under: Кодерство, Павутина Tagged: тестування, Python